使用web.config在asp.net中使用http到期头文件

时间:2011-08-28 13:59:01

标签: asp.net caching

我试图通过设置web.config文件让YSlow在“Add Expires header”部分给我一个A.

我一直在环顾四周,这就是我根据那里的内容投入的内容:

<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中查看它时,即使在Crtl-F5之后,Yslow仍在给出F,

我错过了什么?

感谢。

3 个答案:

答案 0 :(得分:31)

.NET Daily开始,我成功将其应用于IIS上的PHP站点。它将最大年龄设置为30天,而不必指定明确的日期。

将其添加到您的web.config文件中:

<system.webServer>
  <staticContent>
    <clientCache cacheControlMaxAge="30.00:00:00" cacheControlMode="UseMaxAge"/>
  </staticContent>
</system.webServer>

此配置满足PageSpeed&#34;杠杆浏览器缓存&#34;和YSlow&#34;添加过期标题&#34;。 YSlow需要大于7天的值。 PageSpeed需要30天到1年。

答案 1 :(得分:16)

来自the clientCache documentation

  

httpExpires属性的值必须是完全格式化的日期和时间,遵循RFC 1123中的规范。例如:   2010年1月1日星期五12:00:00 GMT

因此,如果要对静态内容使用http expires标头,请按以下方式设置:

<staticContent>
  <clientCache cacheControlMode="UseExpires" httpExpires="Sun, 1 Jan 2017 00:00:00 UTC" />
</staticContent>

更新(以上评论):这很可能仍然无法在内置的VS服务器中运行。我不确定它是否支持过期标题。 AFAIK这是一个IIS设置。

答案 2 :(得分:2)

我认为建议是在静态内容而不是ASPX页面上添加过期。确保检查静态内容的请求标头,例如图像,而不是ASPX文件。

退房:

http://developer.yahoo.com/performance/rules.html