Opened 13 years ago
Closed 11 years ago
#79 closed enhancement (fixed)
if-modified-since etc. should be used to update cache
Reported by: | www.google.com/accounts/o8/id?id=AItOawkld7iER0GyI3zEot5C76X4iyiU_ZTWX-I | Owned by: | somebody |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | nginx-module | Version: | 1.1.x |
Keywords: | Cc: | ||
uname -a: | |||
nginx -V: | not applicable |
Description
Идея не моя и была ранее озвучена в рассылке:proxy_cache + conditional GET
Если в кэше уже есть устаревший ответ, то посылать к backend-у запрос с If-Modified-Since или If-None-Match и для ответа с кодом 304 обновлять только время кэширования(из X-Accel-Expires или proxy_cache_valid 200). В случае получения 200 или любого другого кода - поведение не меняется.
Как вариант реализации - директива proxy_cache_conditional_update с параметрами off, etag(If-None-Match), modified(If-Modified-Since), а значения для них брать из полей ETag, Last-Modified или Date в заголовке закэшированного ответа.
Если забыть о ETag и делать на backend-е проверку в стиле if_modified_since before, то значение для If-Modified-Since можно задавать по времени записи в кэш или текущему и даже не читать заголовоки из файла(proxy_cache_conditional_update off | modified | cached | date).
Change History (3)
comment:1 by , 13 years ago
Status: | new → accepted |
---|
comment:2 by , 13 years ago
Summary: | Обновление времени кэширования с помощью conditional запросов к backend-у → if-modified-since etc. should be used to update cache |
---|
comment:3 by , 11 years ago
Resolution: | → fixed |
---|---|
sensitive: | → 0 |
Status: | accepted → closed |
The proxy_cache_revalidate directive (and friends) introduced in 43ccaf8e8728, available in nginx 1.5.7+.
Где-то тут в треде есть более или менее работающий (хотя и требующий некоторой дороботки) патч:
http://mailman.nginx.org/pipermail/nginx-devel/2011-September/001187.html