Я включил кеширование на NginX (используя fastCGI).NginX не учитывает ETag
Мои динамические страницы не меняются очень часто, и я хотел бы, чтобы они хранились в кеше NginX, если они не изменились (я знаю, я мог бы создавать статические страницы вместо этого ... пусть говорят, что они все еще «динамический» по историческим причинам).
Когда мой сервер backend (Symfony 2) создает страницу, он добавляет в заголовок ответа параметры максимального возраста ETAG +.
Я бы хотел, чтобы браузер сохранял страницу в кеше в течение определенного времени. Как только это время истекло, я хочу, чтобы браузер отправил HTTP HEAD «If-None-Match» с предоставленным ETAG.
Если страница все еще присутствует в кэш-интерфейсе, я хочу, чтобы NginX отправил ответ 304 Not Modified.
Если страница больше отсутствует (я ее очистил вручную, если она была изменена) Я хочу, чтобы NginX пересылал запрос серверу backend, который отправляет ответ HTTP 200.
Без fastCGI кэш Я вижу, что параметр etag присутствует в заголовке ответа (панель отладки firefox). Но каждый раз, когда я перезагружаю страницу, я вижу ответ HTTP 200 вместо ответа HTTP 304.
С кэшем fastCGI ETag полностью исчезает из первоначального ответа HTTP 200. И каждая перезагрузка страницы приводит к HTTP 200 réponse (хотя параметр X-Fastcgi-Cache говорит мне, что это HIT)
Мои вопросы:
Почему браузер отправки запроса GET вместо HEAD, хотя ETag существует?
Почему ETag исчезает из ответа при включении кеша fastCGI на NginX?
Я совсем не привык к кешированию, поэтому мне может не хватать чего-то большого ....
Спасибо за вашу помощь