Как развернуть NocoBase быстрее

Многие при развёртывании NocoBase замечают, что скорость работы не такая, как хотелось бы. Обычно это связано с сетевыми условиями, конфигурацией сервера или архитектурой развёртывания. Прежде чем переходить к советам по оптимизации, ниже приведены ориентиры скорости при стандартной конфигурации, чтобы Вы понимали, чего ожидать.

Ориентиры скорости загрузки NocoBase

Вот результаты замеров в demo-окружении NocoBase:

  • ввод адреса и первое открытие приложения занимает около 2 секунд;
  • переключение между страницами внутри приложения — 50–300 мс.

Ниже мы делимся набором простых, но эффективных приёмов оптимизации развёртывания. Они не требуют изменения кода — только настройки развёртывания, и заметно ускоряют доступ.

I. Оптимизация сети и инфраструктуры

1. Версия HTTP: переходите на HTTP/2

【Предпосылки】

  • Нужен HTTPS: важный момент! Современные браузеры поддерживают HTTP/2 практически только по HTTPS, поэтому сначала настройте SSL-сертификат.
  • Серверное ПО: нужен Web-сервер с поддержкой HTTP/2, например Nginx 1.9.5+ или Apache 2.4.17+.
  • Версия TLS: рекомендуется TLS 1.2 или выше (оптимально TLS 1.3); устаревшие SSL-версии HTTP/2 не поддерживают.

【Заметка】

В классическом HTTP/1.1 при работе с несколькими запросами есть ограничение — обычно одновременно обрабатываются лишь 6–8 соединений, что напоминает очередь и легко вызывает задержки. 250409http1

В HTTP/2 используется «мультиплексирование» — несколько запросов идут параллельно, ресурсы загружаются заметно быстрее. А последний HTTP/3 особенно хорош на нестабильных сетях.

250409http2

【Советы】

  • Убедитесь, что на Вашем веб-сервере включён HTTP/2 — большинство современных серверов (Nginx, Caddy) настраиваются легко.
  • В Nginx достаточно добавить параметр http2 после listen:
listen 443 ssl http2;

【Проверка】

В DevTools браузера откройте вкладку «Сеть», правым кликом включите столбец «Протокол» — увидите версию протокола соединения: 20250407145442

По нашим замерам, общая скорость возрастает примерно на 10%, а в системах с большим количеством блоков и ресурсов прирост ещё заметнее.

2. Пропускная способность: больше — лучше, по трафику — гибче

【Заметка】

Как широкая дорога быстрее узкой, так и пропускная способность определяет эффективность передачи. NocoBase при первом открытии загружает много фронтенд-ресурсов, и недостаток bandwidth превращается в узкое горлышко.

【Советы】

  • Выберите достаточный bandwidth (для большой аудитории — от 50 Мбит/с) — на этом ресурсе экономить не стоит.
  • Рекомендуем оплачивать «по трафику»: многие облачные провайдеры предлагают такой режим — пиково Вы получаете большую пропускную способность, а в обычное время затраты остаются под контролем.

3. Сетевые задержки и расположение сервера: ближе — быстрее

【Заметка】

Задержка — это время ожидания при передаче данных. Даже при достаточной полосе, если сервер далеко от пользователя (например, пользователь в Китае, а сервер в США), каждый запрос тормозится из-за расстояния.

【Советы】

  • Размещайте NocoBase ближе к основной аудитории.
  • Если пользователи распределены по миру, рассмотрите глобальные сервисы ускорения (например, Alibaba Cloud Global Accelerator или AWS Global Accelerator), оптимизирующие маршрутизацию и снижающие задержку.

【Проверка】

Команда ping поможет измерить задержки до серверов в разных регионах. Этот фактор даёт самый заметный эффект — в зависимости от региона скорость возрастает в 1–3 раза. 12 часовых поясов, 13 секунд: 20250409130618

2 часовых пояса, 8 секунд: 20250409131039

Текущий регион, около 3 секунд: 20250409130928

II. Оптимизация архитектуры развёртывания

4. Развёртывание сервера и тип прокси: выбирайте подходящую архитектуру

【Предпосылки】

  • Права на сервере: нужны root или sudo для настройки Nginx и подобного.
  • Базовые навыки: понадобятся базовые знания серверной настройки — но не волнуйтесь, мы дадим примеры.
  • Открытые порты: убедитесь, что в файрволе разрешены порты 80 (HTTP) и 443 (HTTPS).

【Заметка】

Когда пользователь обращается к NocoBase, запрос напрямую попадает на Ваш сервер. Правильный способ развёртывания позволяет серверу обрабатывать запросы эффективнее и отвечать быстрее.

【Варианты и рекомендации】

Запуск NocoBase без обратного прокси для статики (не рекомендуется):

  • Минусы: просто, но при высокой параллельности и обслуживании статических файлов производительность невысока, подходит только для разработки и тестирования.
  • Рекомендация: избегайте этого подхода.

См. «Документация по установке»

Без обратного прокси главная страница загружается около 6,1 секунды: 20250409131357

Использование обратного прокси Nginx / Caddy и т. п. (настоятельно рекомендуется):

  • Плюсы: обратный прокси хорошо обслуживает много соединений, отдаёт статические файлы, балансирует нагрузку, легко настраивается на HTTP/2.
  • Рекомендация: в production после развёртывания (исходники / create-nocobase-app / Docker-образ) поставьте перед приложением Nginx или Caddy.

См. «Документация по развёртыванию»

С Nginx-прокси главная страница загружается за 3–4 секунды: 20250409131541

20250407192453

Кластерное развёртывание и балансировщик нагрузки (для высоких нагрузок и HA):

  • Плюсы: несколько экземпляров обрабатывают запросы, заметно повышая стабильность и пропускную способность.
  • Подробнее см. Кластерный режим

5. Ускорение статики через CDN

【Предпосылки】

  • Домен: должен быть зарегистрированный домен с возможностью управлять DNS.
  • SSL-сертификат: большинство CDN требует SSL (бесплатный Let's Encrypt подойдёт).
  • Выбор сервиса: подбирайте CDN под регион пользователей (для материкового Китая нужен CDN с ICP-регистрацией).

【Заметка】

CDN кэширует Ваши статические ресурсы по узлам по всему миру, и пользователи получают их с ближайшего узла — как воду из ближайшего источника. Это сильно снижает задержку.

Кроме того, главное преимущество CDN — значительная разгрузка сервера приложений и его канала. Когда NocoBase одновременно использует много пользователей, без CDN все запросы статики (JavaScript, CSS, картинки и т. д.) пойдут к Вашему серверу, перегружая канал и снижая производительность. CDN перекладывает эти запросы на себя — Ваш сервер концентрируется на бизнес-логике, и пользователям становится комфортнее.

202504071845_cdn

【Советы】 - Настройте сервер так, чтобы запросы статики шли через CDN; - Выбирайте CDN под регион пользователей:

  • Глобально: Cloudflare, Akamai, AWS CloudFront;
  • Материковый Китай: Alibaba Cloud CDN, Tencent Cloud CDN, Baidu Cloud Acceleration. Пример конфигурации:
# Перенаправляем запросы статики на CDN-домен
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
    rewrite ^(.*)$ https://your-cdn-domain.com$1 permanent;
}

Для небольших проектов даже бесплатный план Cloudflare даёт хорошую скорость:

  1. Зарегистрируйтесь в Cloudflare и добавьте домен.
  2. В DNS укажите NS Cloudflare.
  3. В панели задайте подходящий уровень кэширования.

Особое замечание: даже если Ваши пользователи находятся в одном регионе, CDN всё равно настоятельно рекомендуется — он эффективно разгружает сервер и повышает стабильность системы, особенно при высокой посещаемости.

III. Оптимизация статических ресурсов

6. Сжатие на сервере и кэширование

【Предпосылки】

  • Ресурсы CPU: сжатие нагружает процессор, нужны достаточные мощности.
  • Поддержка модулей Nginx: Gzip обычно встроен; для Brotli может потребоваться доустановить модуль.
  • Права на конфигурацию: нужно изменять конфиг сервера.

【Заметка】

Включение сжатия и продуманного кэширования заметно сокращает объём передаваемых данных и количество повторных запросов — это словно «диета» для ресурсов: загрузка летает. 20250409175241

【Советы】

  • Самое простое: бесплатный CDN Cloudflare автоматически включает Gzip-сжатие.
  • Включите Gzip или Brotli; в Nginx это выглядит так:
# Включаем Gzip
gzip on;
gzip_comp_level 6;
gzip_min_length 1000;
gzip_proxied any;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

# Если есть Brotli, активируйте — сжатие эффективнее
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
  • Установите подходящие заголовки кэширования для статики, чтобы снизить повторную загрузку:
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
    expires 30d;
    add_header Cache-Control "public, max-age=2592000";
    access_log off;
}

7. Использование SSL/TLS и оптимизация производительности

【Предпосылки】

  • SSL-сертификат: нужен действующий сертификат (можно бесплатный Let's Encrypt).
  • Права на конфигурацию: нужны права на настройку SSL.
  • DNS: для OCSP Stapling настройте надёжный DNS-резолвер.

【Заметка】

Безопасность — на первом месте, но при неправильной настройке HTTPS может добавлять задержки. Несколько советов помогут сохранить безопасность и производительность.

【Советы】

  • Используйте TLS 1.3 — самая быстрая версия. В Nginx:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;
  • Включите OCSP Stapling, чтобы ускорить проверку сертификата:
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
  • Используйте session reuse, чтобы не повторять рукопожатие:
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

【Эффект в кросс-региональных сценариях】 Уточнение: ниже приведены результаты в кросс-региональном сценарии (12 часовых поясов), это принципиально отличается от локального доступа (около 3 секунд). Сетевая задержка из-за географии неизбежна, но оптимизации заметно ускоряют загрузку:

После Http2 + кеширование CDN + Gzip + Brotli: До (трансграничный доступ), 13 секунд: 20250409130618 После (трансграничный доступ), 8 секунд: 20250409173528

Этот пример показывает: даже при большом расстоянии разумная оптимизация сокращает время загрузки примерно на 40%, заметно улучшая UX.

IV. Мониторинг и диагностика

8. Мониторинг производительности и базовый анализ

【Предпосылки】

  • Доступность: для большинства онлайн-инструментов сайт должен быть публично доступен.
  • Базовые навыки: нужно понимать ключевые метрики производительности — мы расскажем о каждой.

【Заметка】

Если непонятно, где узкое место, точно оптимизировать нельзя. Используйте бесплатные инструменты для мониторинга, чтобы локализовать проблему.

【Советы】

Бесплатные инструменты для проверки производительности:

Ключевые метрики:

  • Время загрузки страницы
  • Время ответа сервера
  • Время DNS-резолва
  • Время SSL-рукопожатия

Как реагировать на типичные проблемы:

  • Медленный DNS? Поменяйте DNS-провайдера или включите DNS prefetch.
  • Медленное SSL-рукопожатие? Оптимизируйте SSL-конфиг и включите session reuse.
  • Медленный ответ сервера? Проверьте ресурсы сервера, при необходимости — апгрейд.
  • Медленно грузится статика? Подключите CDN и пересмотрите политику кэширования.

Чек-лист быстрой оптимизации развёртывания

Этот чек-лист поможет быстро проверить и оптимизировать развёртывание NocoBase:

  1. Проверка HTTP

    • HTTPS включён (предпосылка для HTTP/2)
    • HTTP/2 включён
    • При возможности — поддержка HTTP/3
  2. Bandwidth

    • Достаточная полоса (минимум 10 Мбит/с, лучше 50+)
    • Можно использовать оплату по трафику вместо фиксированной полосы
  3. Расположение сервера

    • Сервер близко к пользователям
    • Для глобальной аудитории — глобальное ускорение
  4. Архитектура развёртывания

    • Nginx/Caddy как обратный прокси, разделение статики и API
    • При необходимости — несколько экземпляров и балансировщик
  5. CDN

    • Раздача статики через CDN
    • Корректная политика кэширования
    • CDN поддерживает HTTP/2 или HTTP/3
  6. Сжатие и кэш

    • Включён Gzip или Brotli
    • Подходящие заголовки браузерного кэша
  7. Оптимизация SSL/TLS

    • TLS 1.3 для ускоренного рукопожатия
    • OCSP Stapling
    • SSL session reuse
  8. Мониторинг производительности

    • Регулярная оценка с помощью инструментов
    • Контроль ключевых метрик (загрузка, ответ, разрешение, рукопожатие)
    • Корректировка под выявленные проблемы

FAQ

【Вопрос】Сервер за рубежом, китайские пользователи жалуются на скорость. Что делать?

【Ответ】Лучшее решение — поднять сервер в Китае. Если переехать невозможно:

  1. Используйте локальный CDN для статики.
  2. Подключите глобальное ускорение.
  3. Включите все возможные сжатия и кэширования.

【Вопрос】Почему первое открытие NocoBase медленное, а потом быстро?

【Ответ】Это нормально: при первом открытии скачивается большой объём ресурсов. На нашем официальном demo первое открытие обычно около 3 секунд.

Дальше повторный заход в приложение — 1–2 секунды, переключение страниц — 50–300 мс, задержки минимальные.

20250416130719

Если время загрузки слишком велико, остаётся пространство для оптимизации:

  1. Убедитесь, что включён HTTP/2.
  2. Подключите CDN.
  3. Включите Gzip/Brotli.
  4. Проверьте, хватает ли пропускной способности сервера.

【Вопрос】Я на shared-хостинге без возможности менять Nginx. Что делать?

【Ответ】В этом случае возможностей меньше, но всё же:

  1. Подключите CDN (например, Cloudflare).
  2. Подкрутите параметры самого приложения.
  3. Если можно — переходите на VPS с расширенной конфигурацией.

С помощью этих простых, но действенных стратегий Вы заметно ускорите доступ к NocoBase и сделаете работу пользователей плавнее. Большинство шагов настраиваются за пару часов и не требуют изменения кода.