Статические файлы
Статические файлы
Заголовок раздела «Статические файлы»Раздача статических файлов из любой файловой системы через http.static. Обработчики статики монтируются напрямую на сервер и могут раздавать SPA, ассеты или пользовательские загрузки с любого пути.
Конфигурация
Заголовок раздела «Конфигурация»- name: static kind: http.static meta: server: gateway path: / fs: app:public directory: dist static_options: spa: true index: index.html cache: "public, max-age=3600"| Поле | Тип | Описание |
|---|---|---|
meta.server | Registry ID | Родительский HTTP-сервер |
path | string | URL-путь монтирования (начинается с /) |
fs | Registry ID | Запись файловой системы для раздачи |
directory | string | Поддиректория внутри файловой системы |
static_options.spa | bool | SPA-режим — отдавать index для несопоставленных путей |
static_options.index | string | Index-файл (обязателен при spa=true) |
static_options.cache | string | Значение заголовка Cache-Control |
middleware | []string | Цепочка middleware |
options | map | Опции middleware (точечная нотация) |
/static, а SPA на /.
Интеграция с файловой системой
Заголовок раздела «Интеграция с файловой системой»Статические файлы раздаются из записей файловых систем. Подходит любой тип:
entries: # Локальная директория - name: public kind: fs.directory directory: ./public
# Обработчик статики - name: static kind: http.static meta: server: gateway path: /static fs: publicЗапрос /static/css/style.css отдаёт ./public/css/style.css.
Поле directory выбирает поддиректорию внутри файловой системы:
- name: docs kind: http.static meta: server: gateway path: /docs fs: app:content directory: documentation/htmlSPA-режим
Заголовок раздела «SPA-режим»Single Page Applications требуют, чтобы все маршруты отдавали один index-файл для клиентской маршрутизации:
- name: spa kind: http.static meta: server: gateway path: / fs: app:frontend static_options: spa: true index: index.html| Запрос | Ответ |
|---|---|
/app.js | Отдаёт app.js (файл существует) |
/users/123 | Отдаёт index.html (SPA fallback) |
/api/data | Отдаёт index.html (SPA fallback) |
spa: true файл index обязателен. Существующие файлы отдаются напрямую; все остальные пути возвращают index-файл.
Управление кешем
Заголовок раздела «Управление кешем»Настройте кеширование для разных типов ассетов:
entries: - name: app_fs kind: fs.directory directory: ./dist
# Версионированные ассеты — кешировать навсегда - name: assets kind: http.static meta: server: gateway path: /assets fs: app_fs directory: assets static_options: cache: "public, max-age=31536000, immutable"
# HTML — короткий кеш, обязательная ревалидация - name: app kind: http.static meta: server: gateway path: / fs: app_fs static_options: spa: true index: index.html cache: "public, max-age=0, must-revalidate"Типовые паттерны кеширования:
- Версионированные ассеты:
public, max-age=31536000, immutable - HTML/index:
public, max-age=0, must-revalidate - Пользовательские загрузки:
private, max-age=3600
Middleware
Заголовок раздела «Middleware»Применение middleware для сжатия, CORS и другой обработки:
- name: static kind: http.static meta: server: gateway path: / fs: app:public middleware: - compress - cors options: compress.level: "best" cors.allow.origins: "*"Middleware оборачивают обработчик статики по порядку — запросы проходят через каждый middleware до файлового сервера.
/ перехватывает все несопоставленные запросы. Используйте роутеры для API-эндпоинтов, чтобы избежать конфликтов.
См. также
Заголовок раздела «См. также»- Сервер — конфигурация HTTP-сервера
- Маршрутизация — роутеры и эндпоинты
- Файловая система — модуль файловой системы
- Middleware — доступные middleware