ДокументацияБезопасность и развертывание
Производительность
Что nx start делает по умолчанию, что включать и что измерялось.
По умолчанию
| Беспокойство | По умолчанию | Измени это |
|---|---|---|
| Процессы | один Uvicorn рабочий процесс на каждый процессор в Linux и macOS, один в Windows | nx start запускает приложение через Uvicorn |
| Сжатие | выкл. | useGZip = {"minimum_size": 1000} в Конфигурация или сожмите на обратном прокси-сервере. |
| Статические файлы | обслуживается с ETag и Last-Modified, нет Cache-Control |
установите долговременное кэширование на обратном прокси-сервере или CDN для хешированных пакетов |
| HTML-страницы | отображается по запросу, без кеша | ISR с revalidate = N |
| Документация по API | на | useDocs = False в производстве |
| Узел во время выполнения | нет | nx build выполняет предварительную отрисовку клиентских компонентов |
Два переключателя таблицы в nexyconfig.py и ISR на странице:
from nexy.core.models import NexyConfigModel class NexyConfig(NexyConfigModel): useGZip = {"minimum_size": 1000} useDocs = Falserevalidate = 60<h1>Rendered at most once per minute</h1>ISR - это режим файловых страниц: представление, возвращаемое контроллером, отображается при каждом запросе.
Измеренный
Локальный запуск, один Uvicorn рабочий процесс, Windows, Python 3.13, поддерживающие соединения от Python генератора нагрузки на той же машине. Рассматривайте цифры как основу для сравнения изменений, а не как эталон по сравнению с другими платформами.
Маршрут Nexy JSON таблицы - это этот файл:
async def GET(): return {"ok": True}from nexy.decorators import Controller @Controller("/api/ping")class PingController: async def get(self): return {"ok": True}Цифры ниже были измерены с учетом маршрута файла. Измерьте контроллер таким же способом, прежде чем полагаться на него.
| Маршрут | Параллелизм | Запросов в секунду | стр50 | стр.99 |
|---|---|---|---|---|
| Пустой маршрут FastAPI JSON | 16 | ~4500 | 3,4 мс | 5,1 мс |
Маршрут Nexy JSON (src/routes/api/ping.py) |
16 | ~2900 | 5,2 мс | 9,8 мс |
| Страница Nexy SSR (16 КБ, 16 компонентов) | 1 | ~500 | 1,9 мс | 3,0 мс |
| Страница Nexy SSR (16 КБ, 16 компонентов) | 64 | ~670 | 94 мс | 126 мс |
Читаем таблицу:
- Собственные уровни Nexy (контекст пути, промежуточное программное обеспечение) стоят примерно треть пропускной способности чистого FastAPI маршрута.
- Страница, отображаемая на сервере, требует около 2 мс процессорного времени и распределяется примерно по 16 рендерингам шаблонов (по одному на каждый компонент). Страницы с меньшим количеством компонентов пропорционально дешевле.
- Пропускная способность масштабируется вместе с рабочими. В Linux
nx startуже запускается по одному на каждый процессор.
Практические советы
- Поставьте Nginx, Caddy или преимущества вашей платформы: TLS, HTTP/2, Brotli и долговременное кэширование для ресурсов
/__nexy__/client/- их сильные стороны. См. Развертывание. - Используйте ISR для страниц, которые изменяются менее одного раза в минуту.
- Делайте гидратацию лениво с помощью островов, чтобы при первой загрузке было отправлено меньше JavaScript.
- Количество компонентов
.nexyна странице должно быть разумным: каждый из них представляет собой отдельный рендеринг шаблона. - Измерьте свои собственные маршруты. Локального генератора нагрузки, поддерживающего соединения, достаточно для сравнения двух версий страницы.
Совет 1 с Nginx: хешированные клиентские бандлы кэшируются в течение года, остальное уходит в Nexy.
server { listen 443 ssl http2; server_name example.com; location /__nexy__/client/ { proxy_pass http://127.0.0.1:3000; add_header Cache-Control "public, max-age=31536000, immutable"; } location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; }}