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.在文件中搜索禁止配置缓存的虚拟目录的名称,并找到如下所示的配置部分
access flags=' access read access script '
AppFriendlyName='inc '
AppIsolated='2 '
AppRoot='/LM/W3SVC/1832041641/Root/Inc '
DirBrowseFlags=' DirBrowseShowDate DirBrowseShowTime dirbrowseshowsesize DirBrowseShowExtension DirBrowseShowLongDate EnableDefaultDoc '
Path='D:\publish\inc '
>
在IIsWebVirtualDir配置节中添加MD_VR_NO_CACHE='1 '属性。
4.保存配置文件并重新启动IIS。
如果要将服务器上的所有站点配置为禁用IIS缓存,可以通过修改注册表来实现:
编辑注册表中的DisableStaticFileCache值,0表示启用,1表示禁用。键值的位置是HKEY _本地_机器\系统\当前控制集\服务\ inetinfo \参数。
如果该键不存在,可以创建它。
注意事项:
通常,我们不需要禁用iis的静态文件缓存。IIS会根据静态文件的修改时间自动更新缓存。只有在遇到异常情况时,才需要禁用IIS缓存。IIS缓存与Http缓存相关的头无关。向IIS添加缓存头无法清除IIS的静态文件缓存。