2013-07-05 66 views
0

我有一个asp.net网站,我希望客户端浏览器缓存aspx页面的HTML输出一旦得到它们。 从阅读我周围发现了IIS7不支持此外的开箱,所以我下面的代码添加到OnLoad事件我的主母版页:为aspx页面设置缓存控制

protected override void OnLoad(EventArgs e) { 
    DateTime dt = DateTime.Now.AddDays(10); 
    Response.Cache.SetCacheability(HttpCacheability.Public); 
    Response.Cache.SetExpires(dt); 
    Response.Cache.SetMaxAge(new TimeSpan(dt.Ticks - DateTime.Now.Ticks)); 

    base.OnLoad(e); 
} 

有了这个,我仍然得到下面的响应头:

HTTP/1.1 200 OK 
Cache-Control: no-cache 
Pragma: no-cache 
Content-Type: text/html; charset=utf-8 
Content-Encoding: gzip 
Expires: -1 
Vary: Accept-Encoding 
Date: Fri, 05 Jul 2013 14:25:03 GMT 
Content-Length: 10201 

也许我做了一件很久以前覆盖,但我不能,我的生活记得,如果和我所做的。在Google上搜索时没有找到任何有关此信息的信息,这让我认为对于aspx页面,cache-control并不是一个好主意......但我需要这样做才能让云端(CDN)允许整个站点交付。

回答

0

在IIS管道中的某处(我还没有找到位置),没有设置缓存头。在我的母版页中,在设置我想要使用的缓存标题之前,我添加了下面的代码Response.ClearHeaders();对于每个人来说,这可能不是一个好的解决方案,因为你可能在响应中有一些你需要的头文件,但在我的情况下,诀窍。