Как прокси обрабатывают ETag?
Я использую ETag для улучшения производительности. Я решил использовать Etag, действительный на сервере, клиенте и прокси.
Но как это сделать, если прокси-сервер сохранил ETag? Прокси все еще спрашивает веб-сайт, является ли ETag действительным, или сам прокси просто отвечает: "Я знаю это. Не нужно спрашивать сервер?"
Или, другими словами, работает ли следующий сценарий, если включено ETag-кэширование на прокси?
- Браузер делает запрос. ETag "ABBA" возвращается
- Браузер делает еще один запрос к серверу. ETag "ABBA" распознается, возвращается 304 2.1 Браузер использует локальный кеш
- Браузер делает еще один запрос к серверу, отправляя ETag "ABBA". На этот раз сервер решает, что данные изменились, поэтому он возвращает новый ответ с новым Etag.
Если между клиентом и сервером существует прокси-сервер, который знает ETag, он все еще спрашивает сервер, является ли Etag действительным, или запрос заканчивается, если прокси-сервер однажды знает этот Etag?
1 ответ
Поведение прокси-сервера в основном контролируется заголовком Cache-Control, установленным внутренним сервером.
Пока ресурс не истек, прокси будет обслуживать его (включая все связанные метаданные, такие как ETag) из кэша. Прокси-серверу не нужно обращаться к серверу для проверки исходного контента, если он позволяет хранить ресурс в кэше.
Как только заголовок Cache-Control предписывает, что ресурс должен истечь из кэша или пройти повторную проверку, прокси-сервер снова свяжется с сервером для проверки исходного ресурса. Если ETag не был изменен на сервере, его не нужно загружать снова, тот же объект (но с обновленными таймингами Cache-Control) может оставаться в кэше.
Этот ресурс может представлять интерес.