【问题标题】:http expire headers in asp.net with web.config带有 web.config 的 asp.net 中的 http 过期标头
【发布时间】:2011-11-05 11:46:29
【问题描述】:

我试图通过设置 web.config 文件让 YSlow 在“添加过期标头”部分给我一个 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 分

我错过了什么?

谢谢。

【问题讨论】:

  • 您是否在使用 Visual Studio 中的内置 Web 服务器(从您的标题中看起来很像)?你在 IIS7 或 IIS Express 中试过吗?
  • 是的,我用的是内置的VS服务器,在IIS里没试过。你认为这就是问题的根源吗?
  • 是的。我不相信内置服务器会使用你上面提到的那些设置。

标签: asp.net caching


【解决方案1】:

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

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

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

此配置同时满足 PageSpeed“利用浏览器缓存”和 YSlow“添加过期标头”。 YSlow 需要大于 7 天的值。 PageSpeed 需要 30 天到 1 年。

【讨论】:

  • 嗨。我想问一下。如果我将脚本放在我的网络配置中。获得A级的过程需要多长时间?以及该脚本现在是否仍然有效?
【解决方案2】:

来自the clientCache documentation

httpExpires 属性的值必须是符合 RFC 1123 规范的全格式日期和时间。例如: 格林威治标准时间 2010 年 1 月 1 日星期五 12:00:00

因此,如果您想为静态内容使用 http expires 标头,请按如下方式设置:

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

更新(到上面的 cmets):这很可能在内置的 VS 服务器中仍然不起作用。我不确定它是否完全支持过期标头。 AFAIK 这是一个 IIS 设置。

【讨论】:

    【解决方案3】:

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

    退房:

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

    【讨论】:

    • 是的,这就是我想要做的,应该更清楚。它确实在缓存我想要开始工作的静态内容(图片、css 和 js 文件);不是整个 aspx 页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-29
    • 2013-01-27
    相关资源
    最近更新 更多