ДокументацияБезопасность и развертывание

Производительность

Что 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 на странице:

nexyconfig.py
from nexy.core.models import NexyConfigModel  class NexyConfig(NexyConfigModel):    useGZip = {"minimum_size": 1000}    useDocs = False
src/маршруты/блог/index.nexy
---revalidate = 60---<h1>Rendered at most once per minute</h1>

ISR - это режим файловых страниц: представление, возвращаемое контроллером, отображается при каждом запросе.

Измеренный

Локальный запуск, один Uvicorn рабочий процесс, Windows, Python 3.13, поддерживающие соединения от Python генератора нагрузки на той же машине. Рассматривайте цифры как основу для сравнения изменений, а не как эталон по сравнению с другими платформами.

Маршрут Nexy JSON таблицы - это этот файл:

src/routes/api/ping.py
async def GET():    return {"ok": True}
src/apps/ping_controller.py
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 уже запускается по одному на каждый процессор.

Практические советы

  1. Поставьте Nginx, Caddy или преимущества вашей платформы: TLS, HTTP/2, Brotli и долговременное кэширование для ресурсов /__nexy__/client/ - их сильные стороны. См. Развертывание.
  2. Используйте ISR для страниц, которые изменяются менее одного раза в минуту.
  3. Делайте гидратацию лениво с помощью островов, чтобы при первой загрузке было отправлено меньше JavaScript.
  4. Количество компонентов .nexy на странице должно быть разумным: каждый из них представляет собой отдельный рендеринг шаблона.
  5. Измерьте свои собственные маршруты. Локального генератора нагрузки, поддерживающего соединения, достаточно для сравнения двух версий страницы.

Совет 1 с Nginx: хешированные клиентские бандлы кэшируются в течение года, остальное уходит в Nexy.

/etc/nginx/conf.d/my-app.conf
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;    }}

Следующие шаги

Изменить на GitHub

Enter открывает результат, Esc закрывает.