Рейтинг:1

proxy_cache_bypass продолжает обслуживать старый кешированный ответ, если URL-адрес изменится на некэшируемый

флаг md

В обычных условиях при использовании proxy_cache_bypass nginx получит свежую копию из восходящего потока и перезапишет кешированный ответ новым.

Но если URL изменится с кэшируемого на некэшируемый ответ (например, на ответ 4xx с Кэш-контроль: без кеша), затем с помощью proxy_cache_bypass действительно будет обслуживать свежую копию из восходящего потока, но оставит старую копию в кеше.

Это означает, что каждый раз, когда URL-адрес запрашивается без запуска proxy_cache_bypass, он будет продолжать обслуживать старый кеш.

Я предполагаю, что это намеренное поведение, потому что proxy_cache_bypass Только перезаписывает кэшированные ответы, сохранив новый, и без кэша ответ значит нечего сохранять? Это то, что происходит?

Как я могу решить эту проблему? Я не хочу включать кеширование для ответов 4xx...

Я использую nginx/1.14.2

proxy_cache_path /var/cache/nginx level=1:2 keys_zone=my-cache:70m max_size=28g inactive=1d;
proxy_temp_path /var/cache/nginx/tmp;
proxy_cache мой-кэш;
proxy_cache_key $remote_user$scheme$host$request_uri;

proxy_cache_use_stale ошибка timeout invalid_header http_500 http_502 http_503 http_504 http_429;

proxy_cache_bypass $http_cache_control;

proxy_read_timeout 90;
add_header X-Cache-Status $upstream_cache_status;

пометка выключена;
Рейтинг:0
флаг us

Вы можете указать nginx кэшировать только ответы 200, 301 и 302, указав

proxy_cache_valid 10 м;

Это говорит nginx кэшировать действительные ответы в течение десяти минут.

флаг md
Да, но я хочу использовать большее время кэширования. Сейчас ставлю на 24 часа. Кроме того, я думаю, что «Cache-Control» переопределяет «proxy_cache_valid».
флаг us
Вы можете указать любое время с помощью `proxy_cache_valid`. Суть этой директивы в том, что она ограничивает кэширование только этими статусами ответов. Другие коды состояния не кэшируются.
флаг md
Я так сделал и ничего не изменилось. Проблема не в том, что он кэширует нежелательные коды состояния, а в том, что ответы, которые изменяются с кэшируемого на некэшируемый «Cache-Control», продолжают обслуживать кэшированный ответ.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.