Re: Нет uwsgi set header, чем заменить?

S.A.N nginx-forum at nginx.us
Tue Jul 15 13:34:34 UTC 2014


Budulianin Wrote:
-------------------------------------------------------
> Большое спасибо за ответ, теперь понял.
> 
> А если браузер присылает в запросе Cache-Control: no-cache(или
> max-age=0), что часто бывает, а я хочу отдавать кэш, мне как-то
> игнорировать этот заголовок или если из приложения будет ответ с
> Cache-Control: max-age=600, то в браузере в любом случае сохранится
> кэш?

Браузер в запросе будет присылать Cache-Control: no-cache, только если вы
нажали F5 (обновления страницы), браузер говорит что юзер хочет получить
новый контент, но при этом браузер высылает и If-Modified-Since, что
означает что имеете право не отдавать контент если его версия не изменилась
а просто отдать 304 статус и браузер будет использовать контент из своего
кеша.
Проще говоря вы можете игнорировать Cache-Control: no-cache из запроса, если
приходит If-Modified-Since, нл можете и не игнорировать, все зависит от
задачи и бизнес логики приложения.

> Получается, что Cache-Control: max-age=315360000 опасно отдавать, если
> не уверен на 100% что ничего не будет меняться. Как потом отменить
> этот кэш? Если не менять URI.
> 
> Добавлять версию скорее всего не получится, значит нужно задавать
> небольшой max-age даже для статики?

Да, если вы не можете менять uri контента, тогда придется указывать
небольшой max-age и проводить ревалидацию.
В этом случаи приложения должно уметь очень быстро проверять
If-Modified-Since с текущим Last-Modified, если они равны отдавать 304, если
нет отдавать новый контент и статус 200.
Если приложения будет тормозить при ревалидации, тогда смысла от кеширования
мало, потому что юзера будут получать задержку, приложения занимать ресурсы
сервера.
В общем надо делать молниеносную ревалидацию в приложении )

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251763,251804#msg-251804



Подробная информация о списке рассылки nginx-ru