Заголовки HTTP - вопрос кеша - PullRequest
1 голос
/ 25 мая 2011

Я делаю запрос к изображению, и заголовки ответа, которые я получаю:

Accept-Ranges:bytes
Content-Length:4499
Content-Type:image/png
Date:Tue, 24 May 2011 20:09:39 GMT
ETag:"0cfe867f5b8cb1:0"
Last-Modified:Thu, 20 Jan 2011 22:57:26 GMT
Server:Microsoft-IIS/7.5
X-Powered-By:ASP.NET

Обратите внимание на отсутствие заголовка Cache-Control.

При последующих запросах в Chrome Chrome знает, что нужно перейти в кэш для получения изображения. Как узнать, как использовать кэш? У меня сложилось впечатление, что мне придется сказать это с помощью заголовка Cache-Control.

Ответы [ 2 ]

3 голосов
/ 25 мая 2011

У вас есть заголовок ETag и Last-Modified. Это, вероятно, использует те. Но для того, чтобы это произошло, все равно нужно сделать запрос с If-None-Match или If-Modified-Since соответственно.

1 голос
/ 25 мая 2011

Чтобы установить Cache-Control, вы должны указать его самостоятельно. Вы можете сделать это в web.config, IIS Manager для выбранных папок (статические, изображения ...) или установить его в коде. Стандарт HTTP 1.1 рекомендует в качестве максимального срока действия один год в будущем.

Установка срока годности на один год в будущем считается хорошей практикой для всего статического контента на вашем сайте. Отсутствие его в заголовках приводит к If-Modified-Since запросам, которые могут занять больше времени, чем в первый раз, для небольших статических файлов. В этих вызовах используется заголовок ETag.

Когда у вас есть Cache-Control: max-age=315360000, базовые HTTP-ответы будут превосходить по количеству If-Modified-Since> вызовов, и в связи с этим будет полезно удалить заголовок ETag и получить меньшие статические заголовки ответа файла. IIS не имеет настройки для этого, поэтому вы должны сделать response.Headers.Remove("ETag"); в OnPreServerRequestHeaders()

А если вы хотите еще больше оптимизировать заголовки, вы можете удалить X-Powered-By:ASP.NET в настройках IIS и заголовок X-Aspnet-Version (хотя я не вижу в вашем ответе) в web.config - enableVersionHeader="false" в system.web / Элемент httpRuntime.

Для дополнительных советов предлагаю отличную книгу - http://www.amazon.com/Ultra-Fast-ASP-NET-Build-Ultra-Scalable-Server/dp/1430223839

...