Почему логотип главной страницы Google снабжен противоречивыми заголовками «Expires» и «Cache-Control»? - PullRequest
4 голосов
/ 25 марта 2011

Вот логотип, используемый в настоящее время на www.google.com:

http://www.google.com/images/logos/ps_logo2.png

Вот его HTTP-ответ:

HTTP/1.1 200 OK
Content-Type: image/png
Last-Modified: Thu, 05 Aug 2010 22:54:44 GMT
Date: Fri, 25 Mar 2011 16:41:05 GMT
Expires: Fri, 25 Mar 2011 16:41:05 GMT
Cache-Control: private, max-age=31536000
X-Content-Type-Options: nosniff
Server: sffe
Content-Length: 26209
Age: 0
Via: 1.1 localhost.localdomain

Заголовок Cache-Controlговорит, что это хорошо в течение 1 года.Но Expires - это то же самое, что и Date, то есть оно сразу устарело.

Почему разница?

Ответы [ 2 ]

3 голосов
/ 25 марта 2011

Переопределения Cache-Control Истекает для любого HTTP / 1.1 кеша или клиента.

Итак, я предполагаю, что Google хочет кэшировать изображение для HTTP / 1.1, но не кэшировать его вообще для HTTP / 1.0.

Я не знаю, почему это волнует Google. Я думаю, они захотят кэшировать логотип даже для старых клиентов.

0 голосов
/ 19 декабря 2015

Причина в том, что Google хочет, чтобы пользователь кэшировал изображение, а не промежуточные общие кэши (следовательно, директива private).

Многие промежуточные системы кеширования могут быть устаревшими и игнорировать новые функции HTTP (как заголовок управления кэшем), поэтому этот подход не позволяет им кэшировать ресурс (через заголовок expires).Для остальных агентов, понимающих и то, и другое, переопределения контроля кэша истекает заголовок.

Это обычная практика, указанная в rfc2616 sec14.9.3

ИсточникСервер может захотеть использовать относительно новую функцию управления кешем HTTP, такую ​​как директива private, в сети, включая старые кеши, которые не понимают эту функцию.Исходный сервер должен будет объединить новую функцию с полем Expires, значение которого меньше или равно значению Date.Это предотвратит неправильное кэширование ответа старыми кешами.

...