Opened 9 years ago

Closed 7 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 Maxim Dounin, 9 years ago

Status: newaccepted

Где-то тут в треде есть более или менее работающий (хотя и требующий некоторой дороботки) патч:
http://mailman.nginx.org/pipermail/nginx-devel/2011-September/001187.html

comment:2 by Maxim Dounin, 9 years ago

Summary: Обновление времени кэширования с помощью conditional запросов к backend-уif-modified-since etc. should be used to update cache

comment:3 by Maxim Dounin, 7 years ago

Resolution: fixed
sensitive: 0
Status: acceptedclosed

The proxy_cache_revalidate directive (and friends) introduced in 43ccaf8e8728, available in nginx 1.5.7+.

Note: See TracTickets for help on using tickets.