【问题标题】:IIS 6.0 not sending Expired header though I have turned it onIIS 6.0 未发送 Expired 标头,尽管我已将其打开
【发布时间】:2011-01-11 03:58:46
【问题描述】:

我的网站托管在 Windows server 2003,IIS 6.0 上。该网站是在 ASP.net 上开发的,使用 Microsoft Framework 3.5

我已使用以下设置将整个网站的内容到期时间设置为 12 小时:

IIS 管理器->站点->属性->HTTP 标头->启用内容过期->过期后->12 小时

问题是当我加载网站时,Expiry 标头没有随网站一起发送。谁能帮我解决这个问题。

【问题讨论】:

    标签: c# asp.net iis-6 windows-server-2003


    【解决方案1】:

    IIS 6 只会将此标头添加到 静态内容,例如未映射到 asp.net 处理程序的任何内容(css、js、图像等)。您是根本看不到标题,还是只是在您的 asp.net 动态内容/页面上看不到它?

    【讨论】:

    • 嘿,尼克,谢谢,我检查过了。 Yslow 显示除了从 google 获取的 js 文件和 addthis 之外,我的每个请求的标头都已过期。但是当我使用 wfetch 时,它显示没有过期标题
    • @Umair - 如果可以,请尽可能使用 firebug,然后您可以通过网络面板轻松查看每个请求的实际标头列表。它是免费且无价的 :) getfirebug.com
    • firebug 也没有显示任何过期标题与我的任何东西
    【解决方案2】:

    在 IIS 6.0 中使用“过期时间”选项时; IIS 6.0 不发送“Expires”标头,而是发送“Cache-Control”标头来标记客户端静态内容的缓存时长。

    如果内容应在 12 小时后过期(12 小时 * 3600 秒 = 43200 秒),则会发回以下响应标头。

    HTTP/1.1 200 OK
    ...
    Cache-Control: max-age=43200
    ...
    

    如果您设置了内容到期的确切日期,IIS 6.0 将使用“Expires”标头。

    【讨论】:

    • 我应该在哪里使用这些行?因为有 .htaccess 用于 asp.net 应用程序
    • @Umair 上面的片段是 Web 服务器为请求发送的 HTTP 响应。
    • 使用 PHP 我可以在 .htaccess 文件中添加一个缓存控制头,我想知道如何使用 ASP.net + IIS 6.0 来做到这一点。
    • @Umair 对于静态资源,您可以使用 IIS 6.0 ContentExpiration 设置来启用缓存。要完全控制缓存,请使用 ASP.NET 缓存功能;使用 HttpResponse.Cache 属性可以操作 HttpCachePolicy 类以添加缓存功能。详情请见msdn.microsoft.com/en-us/library/xsbfdd8c%28VS.71%29.aspx
    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多