Re: Задавать Last-modified на стороне nginx.
Maxim Dounin
mdounin at mdounin.ru
Tue Jul 15 21:21:15 UTC 2014
Hello!
On Tue, Jul 15, 2014 at 02:23:19PM -0400, Budulianin wrote:
> Правильно ли я понимаю, что Last-modified нельзя задать, через nginx, для
> ответа, который nginx кэширует?
>
> Можно задавать через add_header Last-Modified $date_gmt;
> Но тогда теряется смысл этого заголовка, потому что при каждом обращении к
> nginx, в заголовке будет новое значение.
> Соответственно If-Modified-Since никогда не совпадёт с этим значением и 304
> не отправят на клиент.
>
> У статического контента всё просто, Last-modified это дата последнего
> изменения.
> А вот как задать на стороне nginx Last-modified для ответа полученного на
> основе динамической страницы, чтобы он осел в кэше и не изменялся пока не
> будет очередного запроса к бекенду?
>
> Если посылать Last-modified с бекенда, то тогда всё норм, он появится в кэше
> nginx и пока он там, проверка If-Modified-Since будет работать и будет
> возвращаться 304.
> Но это в случае когда Last-modified задаёт бекенд, а как задать через nginx?
> Это реально?
Вообще такие вещи должен делать бекенд. Если он не умеет и нет
возможности его исправить - в качестве костыля можно за кеширующим
nginx'ом поставить ещё один (достаточно виртуального сервера в
рамках того же nginx'а), сделав двойное проксирование, и добавлять
заголовок Last-Modified там, с помощью add_header. Тогда в кеш
будет попадать ответ уже с Last-Modified, и запросы с
If-Modified-Since будут работать и возвращать 304, пока
соответствующий ответ в кеше.
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru