问题描述
在运行于IIS(在win2012上为8.5)上的Web应用程序(.Net 4.7.2)中,我有以下代码行:
Page.Response.Cache.SetCacheability(HttpCacheability.NoCache);
在:
protected override void OnInit(EventArgs e)
在我的母版页代码后面。
我希望通过删除它,默认值(Private)不会导致缓存来自服务器的响应,但确实可以。不同的用户开始从缓存的服务器获取响应(因为它们是从先前的请求到同一页面)。
我在这里想念什么?
谢谢。
解决方法
默认的缓存控制标头是:私有
缓存机制可以将此页面缓存在专用缓存中,然后仅将其重新发送给单个客户端。这是默认值。大多数代理服务器不会使用此设置缓存页面。
首先,请确保在所有页面中都导入了母版页,因为您已在母版页中添加了非缓存代码。
如果仍然无法使用,则可以使用IIS HTTP响应标头功能清除客户端缓存:
1)打开IIS管理器,选择您的站点。
2)双击中间窗格中的HTTP响应标头
3)在“ HTTP响应标头”窗格中,单击“操作”窗格中的“设置通用标头...”。
4)在“设置通用HTTP响应标头”对话框中,选中使Web内容过期的框,选择立即过期的选项,然后单击“确定”。
您还可以参考下面的文章以获取更多详细信息:
https://docs.microsoft.com/en-us/iis/configuration/system.webserver/staticcontent/clientcache