如何禁止IIS缓存静态文件(png,js,html等)
来源:互联网 发布:汇编和c语言的区别 编辑:程序博客网 时间:2024/05/29 12:02
禁止IIS缓存静态文件(png,js,html等)背景:
IIS为了提高性能,默认情况下会对静态文件js,html,gif,png等做内部缓存,这个缓存是在服务器iis进程的内存中的。IIS这么做在很大程度上可以提高静态文件的访问性能,在正常情况下只要静态文件更新了IIS也会更新缓存。但是如果更新的静态文件很多就有可能出现缓存不更新的情况。
弯路:
我遇到这样一个场景,服务器循环更新上万张股票行情图片,IIS也会对图片进行缓存,由于更新的频率很高,文件很多,就出现了IIS缓存文件超过几十分钟都无法更新的情况。
这时候直觉是浏览器对文件进行了缓存,于是就在IIS的目录上设置Http头:Cache-Control:no-cache,但是无济于事,浏览器请求服务器端得到的状态号是200,这可以说明浏览器确实是从服务器端得到了新的内容,而非读取浏览器本地缓存。
如何禁止IIS缓存静态文件(png,js,html等):
通过设置Http头不让浏览器缓存的方法在这个场景下是行不通的,因为缓存不是出现的客户端,而是出现在IIS服务器上;所以解决问题还需要从IIS本身入手,通过配置Metabase.xml文件禁止IIS缓存相应目录下的静态文件。
1. 首先需要设置IIS允许运行时编辑Metabase.xml文件
打开IIS,然后打开IIS属性页,勾选上“允许直接编辑配置数据库”选项
2. 在运行中输入notepad c:\WINDOWS\system32\inetsrv\MetaBase.xml 打开IIS配置文件
3. 在文件中搜索要配置禁止缓存的虚拟目录名字,找到类似如下配置节
<IIsWebVirtualDir Location ="/LM/W3SVC/1832041641/root/inc"
AccessFlags="AccessRead | AccessScript"
AppFriendlyName="inc"
AppIsolated="2"
AppRoot="/LM/W3SVC/1832041641/Root/inc"
DirBrowseFlags="DirBrowseShowDate | DirBrowseShowTime | DirBrowseShowSize | DirBrowseShowExtension | DirBrowseShowLongDate | EnableDefaultDoc"
Path="D:\publish\inc"
>
</IIsWebVirtualDir>
在IIsWebVirtualDir配置节中添加 MD_VR_NO_CACHE=”1“ 属性
4. 保存配置文件,重启IIS即可。
如果想配置服务器上的所有站点都禁用IIS缓存可以通过修改注册表实现:
编辑注册表中的 DisableStaticFileCache值,0为启用,1为禁用 ,该键值的位置位于:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters
如果该键不存在可以新建dword。
注意事项:
通常情况下我们并不需要禁用IIS的静态文件缓存,iis会自动根据静态文件的修改时间自动更新缓存;只有在你遇到非常情况下才有必要禁用IIS缓存。IIS缓存和Http缓存相关头没有任何关系,在IIS上加缓存头没有办法清除掉IIS对静态文件的缓存
- 禁止IIS缓存静态文件(png,js,html等)
- 如何禁止IIS缓存静态文件(png,js,html等)
- 如何禁止IIS缓存静态文件
- Vagrant下共享目录静态文件(js/jpg/png等)“缓存”问题
- springboot-静态文件 js,css,html等
- IIS启用GZip压缩JS/CSS等静态文件
- IIS启用GZip压缩JS等extjs静态文件
- 禁止js文件缓存问题
- Nginx对于图片,js等静态文件的缓存设置
- 设置IIS实现禁止js文件缓存及其它两种方法
- 服务器IIS中禁止exe,zip,rar等文件下载(转自:http://help.139w.com/Html/?305.html)
- 禁止静态文件缓存的方法,可用于JS与CSS文件上
- spring boot 学习笔记(003) 静态资源(html/js等文件)
- 定义不被SpringMVC拦截的静态资源(html, js, css等文件)通用方法
- html缓存html,css,js等
- Laravel页面如何引入css/js等静态文件?
- django模板中如何导入js、css等静态文件
- 关于禁止js文件缓存问题
- 自平衡二叉查找树(一)-----------AVL树分析和代码实现
- redo
- 聚集索引和非聚集索引的区别
- 各种学习资源
- 创建 和使用 CCAnimation
- 如何禁止IIS缓存静态文件(png,js,html等)
- Flash在线文档开发思路
- 人生最痛苦的事是在一个问题上面出现两次错误
- 在Linux下编译Google leveldb数据库及在C++中操作示例
- c++ 元组使用
- 注册表
- 【win32调用html】HtmlCtrl屏蔽右键方法总结
- 常用纽扣型号对照表
- 移动设计空间节省之道