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

标签 asp.net sharepoint

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

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

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

最佳答案

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

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 等的任何缓存都应该保留。如果图像没有应用缓存 header ,那么听起来您必须编写一个自定义 http 处理程序来拦截对这些图像的请求,然后应用正确的缓存 header 以及在每个页面上设置哪些页面您不想缓存。

关于asp.net - 对于匿名用户,Cache-Control/max-age 始终设置为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1162377/

相关文章:

sharepoint - 在Sharepoint 2013环境中添加,部署和删除解决方案的最佳方法?

javascript - 通过脚本编辑器从 SharePoint 上的 Javascript 内部调用 CSS

sharepoint - 如何安装 TypeScript 定义文件,以便它始终由 VS Code 加载?

javascript - 如何创建板球比赛的正则表达式

Javascript 运行时错误 : $ is undefined

sharepoint - SharePoint Web 部件中 CreateChildControls() 和 ApplyChanges() 方法的调用顺序

ssl - 使用 CN 和主题备用名称与 UPN 不同的 ADFS 客户端证书身份验证

c# - asp gridview 每第二列的样式

c# - 如何将鼠标悬停在一个分区上的鼠标指针更改为手?

c# - ASP.NET 中的缓存是跨用户共享还是特定于个人?