Re: ревалидация кеша fastcgi

VovansystemS vovansystems на gmail.com
Ср Май 4 12:33:39 UTC 2016


>>     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 в запросах к бекенду в полученные от клиента
> значения.  Ревалидация кеша в таких условиях работать не может по
> очевидным причинам.

убрал эти строки. удалил кеш. ристартанул nginx
первая загрузка X-My-Cache: MISS (страницы нет в кеше)
вторая загрузка X-My-Cache: HIT (есть в кеше, получаю закешированную версию)
жду 10 секунд
третья загрузка X-My-Cache: EXPIRED

(а я ожидаю X-My-Cache: REVALIDATED )

заголовки запроса браузера:
GET /product/name HTTP/1.1
Host: site.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112
Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4

на всякий случай сделал то же самое через curl:
curl -i "https://site.com/product/name"
и получил точно такой же результат:
первая загрузка X-My-Cache: MISS (страницы нет в кеше)
вторая загрузка X-My-Cache: HIT (есть в кеше, получаю закешированную версию)
жду 10 секунд
третья загрузка X-My-Cache: EXPIRED

> На бекенде в РНР, отвечайте http_response_code(304); вместо header('HTTP/1.0
304 Not Modified'); так быстрей и правильней.
поправил

> Судя по конфигу, у вас проблема с куками, если браузер присылает куки
сессии, кеш не работает, curl куки не присылает, ответ отдается из кеша.
вроде нет, см выше описание поведения curl при стандартном GET

бэкэнд сейчас, к слову, выглядит примерно так:

<?php
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ) {
  http_response_code(304);
  exit;
}
// код приложения


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