禁用 IIS 缓存静态文件(png、js、html 等)背景:
为了提高性能,IIS内部默认会缓存js、html、gif、png等静态文件。 该缓存存储在服务器iis进程的视频内存中。 IIS这样做可以大大提高静态文件的访问性能。 一般情况下,只要静态文件更新了,IIS也会更新缓存。 但如果更新的静态文件较多,则缓存可能不会更新。
車輛改道:
我遇到过这样的场景,服务器循环更新几万张股市图片html禁止缓存,IIS也会缓存这些图片。 由于更新频率高,文件数量大,更新IIS缓存文件很难超过几十分钟。 健康)状况。
这时,直觉是浏览器缓存了该文件,因此它在IIS目录上设置Http标头:Cache-Control: no-cache,但没有帮助。 浏览器请求服务器得到的状态号是200,这可以说明浏览器确实是从服务器端获取新内容,而不是去读取浏览器本地缓存。
如何严格禁止IIS缓存静态文件(png、js、html等):
通过设置Http header来阻止浏览器缓存的方法在这种场景下就不起作用了,因为缓存的不是出现的客户端,而是IIS服务器; 所以要解决这个问题,我们需要从IIS本身入手,通过配置Metabase。 xml文件严格禁止IIS在相应目录中缓存静态文件。
1.首先需要设置IIS允许在运行时编辑Metabase.xml文件
打开IIS,然后打开IIS属性页,勾选“允许直接编辑配置数据库”选项
2、运行时输入记事本c:WINDOWSsystem32inetsrvMetaBase.xml打开IIS配置文件
3、在文件中搜索要配置禁止缓存的虚拟目录名称,找到类似下面的配置节
复制代码代码如下:
AccessFlags="AccessRead | AccessScript"
应用程序友好名称 =“inc”
应用程序隔离=“2”
AppRoot =“/LM/W3SVC/1832041641/根/inc”
DirBrowseFlags=”DirBrowseShowDate | DirBrowseShowTime | 目录浏览显示时间目录浏览显示大小 |
DirBrowseShowExtension | 目录浏览显示扩展 DirBrowseShowLongDate | 目录浏览启用默认文档”
路径=”D:publishinc”
在 IIsWebVirtualDir 配置部分添加 MD_VR_NO_CACHE="1" 属性
4. 保存配置文件并重新启动IIS。
如果要将服务器上的所有站点配置为禁用 IIS 缓存,可以通过更改注册表来实现:
编辑注册表中的DisableStaticFileCache值,0为启用,1为禁用,通配符的位置位于:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesInetInfoParameters
如果该键不存在html禁止缓存,则可以创建一个新的双字。
防范措施:
通常情况下,我们不需要禁用IIS的静态文件缓存,iis会根据静态文件的变化时间手动更新缓存; 只有遇到特殊情况才需要禁用IIS缓存。 IIS 缓存与 Http 缓存相关标头无关。 向 IIS 添加缓存标头不会删除 IIS 对静态文件的缓存。