А если мне нужно, чтобы клиент кешировал в браузере на очень долго, а на сервере обновлять неактуальную информация чаще?
К примеру, я обновил CSS. Мне надо убить кеш на фронтенде, а клиенту отдать другой URL, по которому он закеширует таблицу стилей на всегда и больше не будет ее запрашивтаь.
т.е. на вебсервере лежать у вас будут вася.css, а сервера-кэши будут забирать уже новое имя. Собственно это задача уже системы публикации, а не серверов-кэшей. Они работают всё-же тупо на обработке 404.
Так и будет. Только nginx оставит в директории кеширования два файла. Один от 123, другой от 124. Вот поэтому я и спрашиваю надо ли по крону очищать директорию. И если надо, то как это сделать просто и эффективно?
Если раздел монтирован без noatime, вы можете на atime смотреть, это как бы самый простой способ. Но тут зависит от количества файлов, если их много-много десятков миллионов то иногда проще хранить чем удалять мелочь всякую.
Очистка статики да, по крону, время модификации старше Х дней и всё. В принципе, можно не монтировать с noatime и смотреть на atime и по ней удалять. Объем как говорил небольшой, меньше полтеррабайта того, что реально запрашивают люди. Хотя вот яндекс поиск по картинкам повадился иногда заглядывать самые древние посты, но не критично, яндекса поиска по видео пока нет :)
Спасибо за рассказ и конфиг. Действительно, очень полезно почитать такие статьи.
Однако читать было как-то немного щекотно. «Несколько frontend… отдаются… ». Я так понимаю, вам не хотелось писать слово «фронтенд». Ну хорошо, в английском нет падежей, но есть множественное число.
«ТТХ backend» я понял только потому, что являюсь программистом и лейтенантом РВиА одновременно :-)
И получается, вы боретесь за чистоту русского от английского, но в логах пишете «Ашипка».
начиная с 0.7.48 Исправление: теперь nginx кэширует только ответы на запросы GET.
так же нет смысла в proxy_hide_header «Set-Cookie»; nginx по умолчанию прячит этот заголовок.
Для таких целей был и есть squid. Им прекрасно решались подобные задачи. Ну разве что теперь в большинстве случаев можно использовать один инструмент вместо нескольких.
Я сравнивал года полтора назад сквида с nginx, всё-же в пользу nginx:
0) он менее прожорлив к ресурсам;
1) иногда на фронтендах можно ченить запускать phpшное если сильно хочется;
2) не хочется городить огород из софта, чем проще конфигурация, тем надёжнее.
Ошибочка у Вас, помимо вышеописанных мной незначительных дополнений
В разделе отдачи сохраненной статики, отсутствует директива root (наследуется с предыдущего уровня, но это не поможет), соответственно все запросы уйдут на @fetch по 404
и сама метка с ошибкой. вероятно, имелось в виду "динамикустатику будем брать с frontend и если отсутствует, то скачивать"
так же опечатка в разделе сервер
location = /500.html {
nginx, ещё раз про кэширование