如何禁止IIS缓存静态文件(png、js、html)
禁止【jìn zhǐ】🔢IIS缓存静【huǎn cún jìng】🥢态文件【tài wén jiàn】🥌(png、js、html等【děng】)背景:
IIS为了提【wéi le tí】🚳高性能,默认情况下会对静态文件【tài wén jiàn】🥌js、html、gif、png等【děng】做内部缓存【huǎn cún】,这个缓存【huǎn cún】是在【zài】服务器【fú wù qì】iis进程的【de】🛥内存中🖕的【de】🌝。IIS这么做在【zài】很大程度上👥可以提高静态🅾文件的【wén jiàn de】🌝访问性【fǎng wèn xìng】🐄能,在【zài】正常🅱情况下只要静【zhī yào jìng】🈵态文件【tài wén jiàn】🥌更新了【le】🕳IIS也会更新缓存【huǎn cún】。但是如【dàn shì rú】果更新的【xīn de】🌝静态文件【tài wén jiàn】🥌很多就【hěn duō jiù】有可能出现缓存【huǎn cún】不更新的【xīn de】🌝情况。
弯路【wān lù】🈴:
我遇到这样一【zhè yàng yī】个场景,服务器【fú wù qì】循环更【xún huán gèng】新上万张股票【zhāng gǔ piào】行情图🍆片,IIS也会对🚔图片进【tú piàn jìn】行缓存【háng huǎn cún】,由于更【yóu yú gèng】新的频【xīn de pín】🎽率很高🎢,文件【wén jiàn】很🐡多,就出现了【le】🕳IIS缓存【huǎn cún】文件【wén jiàn】超过几十分【jǐ shí fèn】钟都无🏺法更新【fǎ gèng xīn】📣的【de】🌝情况。
这时候直觉是浏览器🗑对文件【wén jiàn】🦆进行了【le】🕳缓存【huǎn cún】,于是就在【zài】IIS的【de】🌝目录上【mù lù shàng】设置Http头【tóu】👫:Cache-Control:no-cache,但是无济于事🤠,浏览器🗑请求服务器【fú wù qì】端📜得到的【dé dào de】🥓状态号🐻是200,这可以说明浏【shuō míng liú】览器🗑确实是【què shí shì】从【cóng】服务器【fú wù qì】端📜得到了【dé dào le】新的【xīn de】🎬内容【nèi róng】,而非读【ér fēi dú】取浏览器🗑本地缓【běn dì huǎn】存。
如何禁🌭止🔢IIS缓存静【huǎn cún jìng】🥢态文件【tài wén jiàn】🥌(png、js、html等【děng】):
通过设🚚置Http头【tóu】👫不让浏览器🗑缓存【huǎn cún】的【de】😨方法在【zài】🍢这个场【zhè gè chǎng】🛄景下是行不通的【de】🌝,因为缓🌘存不是出现的【de】🌝客户端,而是出🐻现在【zài】🔮IIS服务器【fú wù qì】上;所以解决问题还需要从【cóng】IIS本身入🚛手【shǒu】,通过配置Metabase.xml文件【wén jiàn】禁🌧止🔢IIS缓存相【huǎn cún xiàng】🛴应目录下的【de】🌝静态文件【tài wén jiàn】🥌。
1. 首先需【shǒu xiān xū】要设置【yào shè zhì】💌IIS允许运🤩行时编辑【jí】Metabase.xml文件【wén jiàn】

打开【kāi】👪IIS,然后打【rán hòu dǎ】开【kāi】👪IIS属性🏝页【yè】,勾选上😻“允许直接编辑【jiē biān jí】配置数【pèi zhì shù】据库📱”选项🏋
2. 在运行中输入【zhōng shū rù】notepad c:\WINDOWS\system32\inetsrv\MetaBase.xml 打开【kāi】👪IIS配置文件【wén jiàn】📘
3. 在文件【wén jiàn】🏒中搜索【zhōng sōu suǒ】要配置【yào pèi zhì】禁止缓🎄存的虚🚺拟目录【nǐ mù lù】名字,找到类似如下【sì rú xià】配置节【pèi zhì jiē】🌉
<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配置节【pèi zhì jiē】🌉中添加 MD_VR_NO_CACHE=”1“ 属性🏝
4. 保存配置文件【wén jiàn】📘,重启【chóng qǐ】IIS即可⤴。
如果想配置服务器上的🐄所有站点都📧禁用【yòng】🐔IIS缓存【huǎn cún】🎭可以通过【guò】⏹修改注册表实现🍳:
编辑注册表中【cè biǎo zhōng】的🐄 DisableStaticFileCache值【zhí】,0为启用【yòng】🕑,1为禁用【yòng】🐔 ,该键值【zhí】的🐄位置位于:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters
如果该【rú guǒ gāi】键不存在可以【zài kě yǐ】新建。
注意事项🕷:
通常情【tōng cháng qíng】况下我们并不🚄需要禁【xū yào jìn】用【yòng】🐔IIS的静态👇文件【wén jiàn】📘缓存【huǎn cún】🎭,iis会自动【huì zì dòng】根据静态文件【tài wén jiàn】的😨修改时间自动更新🆎缓存【huǎn cún】🎭;只有在你遇到【nǐ yù dào】非常情况下才🤽有必要【yǒu bì yào】👎禁用【yòng】🐔IIS缓存【huǎn cún】🎭。IIS缓存【huǎn cún】🎭和【hé】Http缓存【huǎn cún】🎭相关头没有任何关系,在IIS上加缓🕒存头没有办法清除掉【qīng chú diào】➿IIS对静态文件【tài wén jiàn】的😨缓存【huǎn cún】🎭。
关键词:IIS,png,js,html
阅读本文后您有什么感想? 已有 人给出评价!
- 0
- 0
- 0
- 0
- 0
- 0