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

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

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

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

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

<video autoplay loop width="100%">
      <source src="https://static-docs.nocobase.com/886b8e6afd4eea8fd1ff601fdbaecaf0.mp4">
</video>

<video autoplay loop width="100%">
      <source src="https://static-docs.nocobase.com/c240cf4029820f0e4c2bbb58723e2d76.mp4">
</video>

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

## 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](https://static-docs.nocobase.com/250409http1.png)

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

![250409http2](https://static-docs.nocobase.com/250409http2.png)

【Советы】

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

```nginx
listen 443 ssl http2;
```

【Проверка】

В DevTools браузера откройте вкладку «Сеть», правым кликом включите столбец «Протокол» — увидите версию протокола соединения:
![20250407145442](https://static-docs.nocobase.com/20250407145442.png)

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

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

【Заметка】

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

【Советы】

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

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

【Заметка】

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

【Советы】

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

【Проверка】

Команда ping поможет измерить задержки до серверов в разных регионах.
Этот фактор даёт самый заметный эффект — в зависимости от региона скорость возрастает в 1–3 раза.
12 часовых поясов, 13 секунд:
![20250409130618](https://static-docs.nocobase.com/20250409130618.png)

2 часовых пояса, 8 секунд:
![20250409131039](https://static-docs.nocobase.com/20250409131039.png)

Текущий регион, около 3 секунд:
![20250409130928](https://static-docs.nocobase.com/20250409130928.png)

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

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

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

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

【Заметка】

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

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

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

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

> См. «[Документация по установке](https://docs.nocobase.com/cn/get-started/quickstart)»

Без обратного прокси главная страница загружается около 6,1 секунды:
![20250409131357](https://static-docs.nocobase.com/20250409131357.png)

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

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

> См. «[Документация по развёртыванию](https://docs.nocobase.com/cn/get-started/deployment/production)»

С Nginx-прокси главная страница загружается за 3–4 секунды:
![20250409131541](https://static-docs.nocobase.com/20250409131541.png)

![20250407192453](https://static-docs.nocobase.com/20250407192453.png)

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

- Плюсы: несколько экземпляров обрабатывают запросы, заметно повышая стабильность и пропускную способность.
- Подробнее см. **[Кластерный режим](https://docs-cn.nocobase.com/welcome/getting-started/deployment/cluster-mode)**

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

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

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

【Заметка】

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

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

![202504071845_cdn](https://static-docs.nocobase.com/202504071845_cdn.png)

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

- Глобально: Cloudflare, Akamai, AWS CloudFront;
- Материковый Китай: Alibaba Cloud CDN, Tencent Cloud CDN, Baidu Cloud Acceleration. Пример конфигурации:

```nginx
# Перенаправляем запросы статики на 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](https://static-docs.nocobase.com/20250409175241.png)

【Советы】

- Самое простое: бесплатный CDN Cloudflare автоматически включает Gzip-сжатие.
- Включите Gzip или Brotli; в Nginx это выглядит так:

```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;
```

- Установите подходящие заголовки кэширования для статики, чтобы снизить повторную загрузку:

```nginx
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:

```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, чтобы ускорить проверку сертификата:

```nginx
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
```

- Используйте session reuse, чтобы не повторять рукопожатие:

```nginx
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
```

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

После Http2 + кеширование CDN + Gzip + Brotli:
До (трансграничный доступ), 13 секунд:
![20250409130618](https://static-docs.nocobase.com/20250409130618.png)
После (трансграничный доступ), 8 секунд:
![20250409173528](https://static-docs.nocobase.com/20250409173528.png)

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

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

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

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

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

【Заметка】

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

【Советы】

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

- [Google PageSpeed Insights](https://pagespeed.web.dev/)
- [WebPageTest](https://www.webpagetest.org/)
- [Pingdom](https://tools.pingdom.com/)

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

- Время загрузки страницы
- Время ответа сервера
- Время 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](https://static-docs.nocobase.com/20250416130719.png)

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

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

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

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

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

---

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