# конспект · шаг 1 из 1
Конспект раздела: отдаём файлы
Раздел про решение №4 для самого частого случая: содержимое лежит файлом на диске.
Путь запроса к файлу
URI → root/alias → путь на диске → есть файл? отдаём
→ нет? try_files решает, что дальше
→ отдали? навешиваем кеш-заголовки
Три инструмента
| Инструмент | Отвечает на вопрос |
|---|---|
root / alias |
где на диске искать |
try_files |
что делать, если файла нет |
expires / Cache-Control |
сколько браузер может не спрашивать снова |
Формулы, которые надо помнить
root /var/www/static + /images/logo.png = /var/www/static/images/logo.png
alias /mnt/pics/ + location /images/ → /images/logo.png = /mnt/pics/logo.png
Ловушки раздела списком
location /filesбез слеша приalias→ alias-traversal;- нет
indexиautoindex off→ 403, а не 404; try_files $uri /index.html;при отсутствующем файле → цикл и 500;- SPA без отдельного location для ассетов → отсутствующий файл отдаёт
index.htmlс кодом 200; no-cache≠ «не кешировать» (этоno-store);expiresбезalwaysне действует на ошибочные ответы.
Стратегия кеша по типам
| Файл | Заголовок |
|---|---|
app.4f2c1b.js (хеш в имени) |
max-age=31536000, immutable |
index.html |
no-cache (хранить, но перепроверять) |
| картинки без версии | недолгий max-age + валидатор |
Отдача кусками
Range → 206 Partial Content + Content-Range; за пределами файла - 416.
Accept-Ranges: bytes nginx ставит сам, и по нему клиент понимает, что докачка
возможна. Сжатый ответ кусками не отдаётся - самая частая причина «докачка
не работает».
Чек-лист: что ты должен уметь объяснить
- Чем
aliasотличается отrootи когда он опасен. - Что произойдёт при запросе каталога без
index-файла. - Почему
try_filesне отдаёт файл клиенту в php-локации. - Три исхода кеширования и когда возникает 304.
- Почему
index.htmlв SPA нельзя кешировать надолго.
Комментарии
Пока нет комментариев. Будь первым!
Оставить комментарий