См .: https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching#Freshness
, когда кэш получает запрос на устаревший ресурс, он передает этот запрос с If-None-Match, чтобы проверить, действительно ли он еще свеж.Если это так, сервер возвращает заголовок 304 (не изменен), не отправляя тело запрошенного ресурса, сохраняя некоторую полосу пропускания.
Предположим, у нас есть: кеш браузера, прокси-кеш и исходный сервер.:
- Кэш браузера содержит сохраненный устаревший ресурс с тегом сущности «A».
- Кэш-прокси содержит сохраненный устаревший ресурс с тегом сущности «B».Прокси-кеш может действовать как клиент и как сервер.
Это может быть, например, случай, если вы только начинаете использовать прокси-кеш.Что произойдет в этом случае?
- Браузер отправит условный запрос с If-None-Match: "A".
- Кэш-прокси получает условный запрос.
- Прокси-кеш перенаправит этот запрос (согласно приведенной выше цитате).Это связано с тем, что хранимый ресурс в прокси-кэше устарел.
- Исходный сервер получает запрос с тегом сущности "A".
Допустим, ресурс на источникеСервер содержит сущность-тег «А».Теперь сервер ответит ответом 304 Not Modified.
На данный момент я больше ничего не понимаю, поэтому, может быть, я что-то не так понял раньше?Ответ 304 подходит для кэша браузера, поскольку он содержит тот же ресурс, что и на исходном сервере (тот же тег объекта).Однако прокси-кеш содержит более старый ресурс (с другим Etag).Если прокси-кеш получит ответ 304 (и обновит свои метаданные), то прокси-кеш снова сделает ресурс действительным, пока он старый.
Это нежелательно, поэтому, возможно, я где-то допустил ошибку?Как это на самом деле работает?Как мне увидеть этот процесс?