对于匿名用户,Cache-Control / max-age始终设置为0

时间:2009-07-22 00:00:08

标签: asp.net sharepoint

我在发布网站上启用了blobcaching。

对于经过身份验证的用户,可以根据web.config中blobCache元素中的设置正确设置Cache-Control HTTP标头中的max-age属性,对于匿名用户,将其设置为0。 这导致浏览器发出大量304请求,试图查看图像是否已更改并对性能产生负面影响。 这只是“/ Style Library”中文件的问题。

在博客中有一些提到这个问题,但到目前为止还没有找到解决方案。有什么方法可以解决这个问题或通过其他方式强制设置此标题吗?我已经尝试实现一个HTTP处理程序来执行此操作,但它仍然是0。

1 个答案:

答案 0 :(得分:3)

如果您为整个网站设置缓存,然后在您不希望匿名用户获得缓存内容的页面上,您会添加以下内容:

protected override void OnInit(EventArgs e)
{
    if (user.IsAnonymous())
    {
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Cache.SetNoStore();
        Response.Cache.SetExpires(DateTime.MinValue);
    }
    base.OnInit(e);
}

哪会产生这个:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Length: 15965
Content-Type: text/html; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.0
X-Powered-By: ASP.NET
Date: Mon, 03 Aug 2009 01:07:26 GMT

这应该使网页不被缓存,但是对图像应用缓存,css,js等应该保留。如果图像没有应用缓存标头,那么听起来你必须编写一个自定义的http处理程序来拦截对这些图像的请求,然后应用正确的缓存标题以及每页的设置基于什么页面你不想要缓存。