Подтвердить что ты не робот

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

Что мне не хватает?

Спасибо.

4b9b3361

Ответ 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