Hello!
On Wed, May 04, 2016 at 02:58:19PM +0300, VovansystemS wrote:
> Добрый день,
>
> пытаюсь настроить ревалидацию страниц сайта в кеше директивой
> fastcgi_cache_revalidate on;
> ожидаю, что если элемент кеша устарел, то nginx сам сделает запрос к
> бекэнду с заголовком If-Modified-Since (как это описано тут
> http://whitequark.org/blog/2014/04/05/page-caching-with-nginx/ ), но
> этого не происходит.
>
> при устаревании элемента кеша $upstream_cache_status == EXPIRED и на
> бэкэнд уходит стандартный GET без заголовков на ревалидацию при
> включённом fastcgi_cache_revalidate on.
>
> я попробовал задавать fastcgi_cache_revalidate на разных уровнях, на
> случай если есть особенности наследования, но всё равно безуспешно.
>
> если же я делаю
> curl -i --header 'If-Modified-Since: Tue, 11 Dec 2015 10:10:24 GMT'
> https://site.com
>
> то получаю X-My-Cache: REVALIDATED - потому что клиентский заголовок
> был корректно передан на бэкэнд, который ответил header('HTTP/1.0 304
> Not Modified');
>
> вопрос: я не понимаю как должна работать директива и хочу странного
> или всё же задачу можно как-то решить? подскажите, пожалуйста.
[...]
> fastcgi_param HTTP_IF_NONE_MATCH $http_if_none_match if_not_empty;
> fastcgi_param HTTP_IF_MODIFIED_SINCE $http_if_modified_since if_not_empty;
У вас в конфиге написано: установить заголовки If-None-Match и
If-Modified-Since в запросах к бекенду в полученные от клиента
значения. Ревалидация кеша в таких условиях работать не может по
очевидным причинам.
--
Maxim Dounin
http://nginx.org/
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru