为什么HttpCachePolicy默认值Private导致服务器缓存响应?

问题描述

在运行于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响应标头

enter image description here

3)在“ HTTP响应标头”窗格中,单击“操作”窗格中的“设置通用标头...”。

4)在“设置通用HTTP响应标头”对话框中,选中使Web内容过期的框,选择立即过期的选项,然后单击“确定”。

enter image description here

您还可以参考下面的文章以获取更多详细信息:

https://docs.microsoft.com/en-us/iis/configuration/system.webserver/staticcontent/clientcache