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 mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru