Получение сообщения «Ответ устарел» от прокси-сервера Squid [закрыто ]

Я смотрю журналы в инструментах разработчика Chrome. Я также могу увидеть это с помощью curl. Вот вывод curl

Content-Type: application/javascript
Date: Sat, 24 Sep 2016 01:16:37 GMT
ETag: "a02d00a09b8139b0919567e4c92cc752"
Last-Modified: Fri, 23 Sep 2016 22:57:56 GMT
Server: nginx
x-amz-id-2: L3gfIQNLcBLUZ2gtVWDiIdN9xWWiV2H6K6zjjE9JSHVMnDXI6+uLuhqptqQRCZLNFoMmWg3mIQs=
x-amz-request-id: E38062B3D506DF06
Content-Length: 1940494
Age: 7574
Warning: 110 squid/3.5.20 "Response is stale"
X-Cache: HIT from 0.0.0.0
X-Cache-Lookup: HIT from 0.0.0.0:3128
Via: 1.1 0.0.0.0 (squid/3.5.20)
Connection: keep-alive

Почему Squid говорит Предупреждение: 110 squid / 3.5.20 «Ответ устарел» ?

1
задан 24 September 2016 в 06:26
1 ответ

Squid добавляет этот заголовок, так как это требуется спецификациями HTTP-кэширования. https://tools.ietf.org/html/rfc7234#section-5.5.0:

Поле заголовка "Предупреждение" используется для указания дополнительной информации. о состоянии или преобразовании сообщения, которое может не быть отраженный в коде статуса. Эта информация обычно используется для предупреждать о возможной некорректности, возникающей при выполнении операций кэширования или преобразования, применяемые к полезной нагрузке сообщения. В

и разделе 5.5.1 просто указано, что кэш необходим (SHOULD) для отправки предупреждения 110, когда HIT-объекты залежались. Требования RFC "SHOULD" - это те требования, которые должны выполняться, если только не существует конкретной, очень хорошей и документально подтвержденной причины этого не делать. Предупреждения являются информативными, поэтому нет веской причины их избегать.

Чистое содержимое не только старое, но и прошедшее точку, в которой кэш должен был спросить сервер, есть ли более новая копия (ревалидация). Таким образом, предупреждение говорит о том, что если бы вы на самом деле обновили копию сервера, то кэш все равно доставил бы старую версию. Это потенциально очень серьезное нарушение в поведении HTTP-приложений, особенно когда речь идет о .js.

Эта ситуация обычно вызвана настройкой администратором некоторого параметра refresh_pattern, который нарушает требования HTTP к ревалидации. Например, параметр ignore-*, заставляющий объект, который будет обслуживаться, находится в кэше, вместо того, чтобы выполнять повторную проверку.

Так как этот ответ не имеет заголовка Cache-Control, то значения refresh_pattern min/pct/max - это то, что Squid использует для вычисления возраста сталеустойчивости. Вы можете подумать об увеличении этих значений, чтобы сделать нормальный срок службы объектов HIT дольше, вместо того, чтобы игнорировать/нарушать требования HTTP.

2
ответ дан 3 December 2019 в 20:34

Теги

Похожие вопросы