99p CDN

Подключение

Три вещи, которые стоит сделать правильно с первого раза: preconnect, версионирование и заголовки кеширования.

Preconnect

Браузер не начнёт качать файл, пока не установит соединение: DNS, TCP, TLS. На мобильной сети это легко превращается в лишние 300–400 мс. Подсказка в <head> запускает установку соединения заранее, параллельно с разбором HTML.

<link rel="preconnect" href="https://cdn.99p.ru" crossorigin>

Атрибут crossorigin обязателен, если с домена грузятся шрифты — без него браузер откроет второе соединение, и смысл подсказки пропадёт.

Версионирование

Версия кладётся в имя файла, а не в query-строку:

/assets/app.4f2c9a1.js     — так
/assets/app.js?v=4f2c9a1   — не так

Часть промежуточных кешей игнорирует query-строку при выборе ключа, и пользователь получает старый файл под новым адресом. Хеш в имени снимает вопрос целиком.

Заголовки

ТипCache-Control
С хешем в имениpublic, max-age=31536000, immutable
Без хешаpublic, max-age=2592000
Часто меняетсяpublic, max-age=300, stale-while-revalidate=86400
Сжатие включено на стороне узла: zstd, затем gzip. Предварительно сжимать файлы при сборке не нужно.

Проверка

curl -sI https://cdn.99p.ru/assets/style.css | grep -i "cache-control\|content-encoding"