Http истекает заголовки в asp.net с web.config
Я пытаюсь заставить YSlow дать мне A в разделе "Добавить заголовок", установив файл web.config.
Я оглядывался, и это то, на что я положил, основываясь на том, что там:
<staticContent>
<clientCache httpExpires="15.00:00:00" cacheControlMode="UseExpires"/>
</staticContent>
</system.webServer>
Это то, что я вижу в Firebug:
Response Headers
HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Sun, 28 Aug 2011 13:54:50 GMT
X-AspNet-Version: 4.0.30319
Cache-Control: private
Content-Type: image/jpeg
Content-Length: 24255
Connection: Close
Request Headersview source
Host localhost:50715
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0
Accept image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection keep-alive
Referer http://localhost:50715/MySite/SiteHome.html
Pragma no-cache
Cache-Control no-cache
Однако, когда я смотрю на него в Firefox, Yslow все еще дает F на этом, даже после Crtl-F5
Что мне не хватает?
Спасибо.
Ответы
Ответ 1
Из документация clientCache
Значение атрибута httpExpires должно быть полностью отформатированной датой и временем, которое следует за спецификацией в RFC 1123. Например: Пт, 01 янв 2010 12:00:00 GMT
Итак, если вы хотите использовать заголовки http expires для своего статического контента, установите его следующим образом:
<staticContent>
<clientCache cacheControlMode="UseExpires" httpExpires="Sun, 1 Jan 2017 00:00:00 UTC" />
</staticContent>
Обновить (к комментариям выше): это, скорее всего, все еще не будет работать на встроенном сервере VS. Я не уверен, что он поддерживает окончание заголовков. AFAIK это настройка IIS.
Ответ 2
Из .NET Daily, я успешно применил это к сайту PHP в IIS. Он устанавливает максимальный возраст до 30 дней, вместо того, чтобы указывать явную дату.
Добавьте это в свой web.config
файл:
<system.webServer>
<staticContent>
<clientCache cacheControlMaxAge="30.00:00:00" cacheControlMode="UseMaxAge"/>
</staticContent>
</system.webServer>
Эта конфигурация удовлетворяет как кеш-керам "Закрепление браузера", так и "Завершить заголовки". Для YSlow требуется значение больше 7 дней. PageSpeed требуется от 30 дней до 1 года.
Ответ 3
Я считаю, что рекомендация заключается в том, чтобы добавить срок действия на статический контент, а не на страницы ASPX. Убедитесь, что вы проверяете заголовки запросов для статического контента, такого как изображения, а не файл ASPX.
Отъезд:
http://developer.yahoo.com/performance/rules.html