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