nuckty
EN
Все разделы →

Хостинг и согласование форматов

Решение

Использовать логические адреса ресурсов, а выбор готового формата изображения и сжатия поручить nginx или Apache по заголовкам запроса. Генерировать конфигурацию хостинга при сборке.

Контекст

nuckty создаёт статический артефакт для nginx или Apache, в том числе для хостинга с доступом по FTP. Согласование форматов должно работать без обязательного сервера приложений или CDN.

Альтернативы

picture и source. HTML позволяет явно выбирать форматы изображений. Это полезно, когда автору нужен контроль через разметку, но правила выбора повторяются у каждого изображения.

CDN. CDN может согласовывать и преобразовывать ресурсы. Его можно использовать с сайтом на nuckty, но это дополнительный сервис, а не требование контракта сборки.

Сжатие при каждом запросе. Оно позволяет не хранить варианты, но повторяет работу, которую для статического артефакта можно выполнить один раз.

Аргумент

Растровые изображения используют логический адрес вида /_i<hash>. Сборка копирует оригинал и подготовленные варианты; сама она не кодирует AVIF и WebP. Сервер выбирает доступный формат по Accept и при необходимости возвращает оригинал.

Для сжатия сервер выбирает Brotli, Gzip или исходный файл по Accept-Encoding. Сгенерированные правила задают общую стратегию вместо её повторения в разметке каждой страницы.

Последствия

Apache нужны соответствующие модули и разрешение выполнять директивы сгенерированного .htaccess. Цена или категория услуги хостинга не подтверждает совместимость. nginx должен использовать сгенерированные правила.

.htaccess находится в outDir, nginx.conf — в .build. Расширение для локального просмотра создаёт собственную конфигурацию запуска и не воспроизводит автоматически пользовательские хуки или поведение Apache в продакшене.

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