Уведомление о переводе ИИ

Эта документация была автоматически переведена ИИ.

Как ускорить развертывание

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

Эталонные значения нормальной скорости загрузки NocoBase

Ниже приведены показатели скорости загрузки, измеренные в демо-среде NocoBase:

  • Время, необходимое для первого входа в приложение по URL: около 2 секунд
  • Время переключения между страницами внутри приложения: около 50–300 миллисекунд

Далее я поделюсь рядом простых, но эффективных приёмов оптимизации развертывания, которые позволяют существенно повысить скорость доступа без изменения кода — только за счёт настройки параметров развертывания:

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

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

【Предварительные требования】

  • Обязательная поддержка HTTPS: Это важно! Практически все современные браузеры поддерживают HTTP/2 только поверх HTTPS-соединений, поэтому сначала необходимо настроить SSL-сертификаты.
  • Требования к серверу: Необходимо использовать серверное ПО с поддержкой 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 соединений, что похоже на очередь за билетами и легко приводит к задержкам. 250416_http1_en

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

250416_http2_en

【Рекомендации по оптимизации】

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

【Проверка】

В панели разработчика вашего браузера откройте вкладку «Network», щёлкните правой кнопкой мыши и включите столбец «Protocol», чтобы увидеть текущую версию протокола соединения: 20250407145442

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

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

【Пояснение】

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

【Рекомендации по оптимизации】

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

3. Сетевая задержка и географическое расположение сервера: чем ближе, тем быстрее

【Пояснение】

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

【Рекомендации по оптимизации】

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

【Проверка】

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

Через 2 часовых пояса — 8 секунд: 20250409131039

В пределах своего региона — около 3 секунд: 20250409130928

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

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

【Предварительные требования】

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

【Пояснение】

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

【Различные решения и рекомендации】

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

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

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

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

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

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

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

С прокси на Nginx загрузка главной страницы занимает около 3–4 секунд. 20250409131541

20250416081410

Развертывание кластера с балансировкой нагрузки (подходит для сценариев высокой нагрузки и высокой доступности):

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

5. Ускорение статических ресурсов с помощью CDN

【Предварительные требования】

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

【Пояснение】 CDN (Content Delivery Network) кэширует ваши статические ресурсы в узлах по всему миру, позволяя пользователям получать ресурсы с ближайшего узла — как брать воду из ближайшего источника, что значительно сокращает задержки загрузки.

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

20250416_0826

【Рекомендации по оптимизации】• Настройте сервер на распределение запросов статических ресурсов через 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 обеспечит хорошее ускорение через CDN:
  1. Зарегистрируйте аккаунт Cloudflare и добавьте свой домен;
  2. Измените DNS, чтобы домен указывал на серверы Cloudflare;
  3. Установите подходящий уровень кэширования в панели управления.

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

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

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

【Предварительные требования】

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

【Пояснение】

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

【Рекомендации по оптимизации】

  • Самое простое решение: использовать бесплатный 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-сертификат: Нужен действующий SSL-сертификат (можно использовать бесплатные сертификаты Let's Encrypt).
  • Права на конфигурацию сервера: Нужны права на изменение SSL-конфигурации.
  • Настройка DNS: Настройте надёжные DNS-резолверы для OCSP Stapling.

【Пояснение】

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

【Рекомендации по оптимизации】

  • Используйте TLS 1.3 — на сегодняшний день это самая быстрая версия TLS. Настройка в 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;
  • Сократите время повторного рукопожатия за счёт повторного использования сессий:
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

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

С использованием комбинации Http2 + кэш CDN + сжатие Gzip + сжатие Brotli: До оптимизации (межрегиональный доступ) — 13 секунд: 20250416130618 После оптимизации (межрегиональный доступ) — 8 секунд: 20250409173528

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

IV. Мониторинг и устранение неполадок

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

【Предварительные требования】

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

【Пояснение】

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

【Рекомендации по оптимизации】

Используйте следующие бесплатные инструменты для проверки производительности сайта:

Сосредоточьтесь на этих ключевых метриках:

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

Решения распространённых проблем:

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

Быстрый чек-лист оптимизации развертывания

Следующий чек-лист поможет вам быстро проверить и оптимизировать ваше развертывание NocoBase:

  1. Проверка версии HTTP

    • Включён HTTPS (необходимое условие для HTTP/2)
    • Включён HTTP/2
    • При наличии возможности рассмотрите поддержку HTTP/3
  2. Оценка пропускной способности

    • Достаточная пропускная способность сервера (рекомендуется минимум 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-сессий
  8. Мониторинг производительности

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

Часто задаваемые вопросы

【В】Мой сервер развёрнут в другом регионе, не там, где находятся пользователи, поэтому доступ медленный. Что делать?

【О】Лучшее решение — выбрать облачный сервер в том же регионе, что и основные пользователи. Если это невозможно, также можно:

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

【В】Почему мой NocoBase медленно загружается в первый раз, но потом работает быстро?

【О】Медленная первая загрузка — это нормально, потому что изначально требуется скачать множество ресурсов.

На примере нашего официального Demo: первая загрузка обычно занимает около 3 секунд. При последующем повседневном доступе ввод URL занимает около 1–2 секунд, а переходы между страницами внутри приложения очень быстрые — примерно 50–300 миллисекунд, с очень низкой задержкой.

20250416130719

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

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

【В】Сейчас я использую виртуальный хостинг и не могу менять конфигурацию Nginx. Что делать?

【О】В этом случае вариантов оптимизации меньше, но мы всё же рекомендуем:

  1. Попробовать использовать сервисы CDN (например, Cloudflare);
  2. Оптимизировать параметры, которые можно настроить в рамках приложения;
  3. Если есть возможность, рассмотреть переход на VPS, поддерживающий больше пользовательских настроек.

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

Повседневные операции: 2504161639operatio_user2 2504161639operation3