Skip to main content
Version: Next

Кэш, CDN, CI и база данных (рекомендации)

Краткий конспект для эксплуатации; не заменяет Helm/README отдельных приложений.

Статика QMWeb и QMAdmin

  • Выкладывайте immutable ассеты с хэшем в имени (Vite по умолчанию) и отдавайте их с долгим Cache-Control (например public, max-age=31536000, immutable).
  • Для index.html используйте короткий кэш или no-cache, чтобы выкатывать новые бандлы без «залипания» старого shell.
  • Подключение CDN поверх nginx: те же правила разделения «долго для хэшированных файлов / коротко для HTML».

Загрузки QMServer в S3

При загрузке объектов через модуль internal/s3asset задаётся Cache-Control для ответов S3/Cloud:

  • Переменная QMSERVER_S3_UPLOAD_CACHE_CONTROL (если не задана — по умолчанию private, max-age=3600 для пользовательского контента).
  • Для публичных долгоживущих ассетов оператор может выставить, например, public, max-age=86400 — осознанно, с учётом инвалидации.

Кэш в CI (Go и npm)

  • В workflow уже используются cache-dependency-path для go.sum и package-lock.json там, где настроено — сохраняйте этот паттерн при добавлении новых модулей.
  • Для Docker включайте registry/build cache (cache-from / cache-to type=gha), как в образах QM*.

Multi-stage Docker

  • Собирайте бинарь/фронт в builder-стадии, в финальный слой копируйте только артефакт и минимальные зависимости (Alpine/Distroless), чтобы уменьшить поверхность атаки и размер.

Индексы MySQL и миграции

  • Перед добавлением индексов снимайте медленные запросы (slow log, EXPLAIN) для кабинета и биллинга.
  • Миграции GORM AutoMigrate и ручные ALTER прогоняйте через контролируемый процесс (staging → prod, бэкап, откат).