綠色資源網(wǎng):您身邊最放心的安全下載站! 最新軟件|熱門排行|軟件分類|軟件專題|論壇轉(zhuǎn)帖|廠商大全

綠色資源網(wǎng)

技術(shù)教程
您的位置:首頁服務(wù)器類Web服務(wù)器 → 如何禁止IIS緩存靜態(tài)文件(png、js、html)

如何禁止IIS緩存靜態(tài)文件(png、js、html)

我要評論 2011/10/31 20:12:01 來源:綠色資源網(wǎng) 編輯:downcc.com [ ] 評論:0 點擊:206次

禁止IIS緩存靜態(tài)文件(png、js、html等)背景:

IIS為了提高性能,默認情況下會對靜態(tài)文件js、html、gif、png等做內(nèi)部緩存,這個緩存是在服務(wù)器iis進程的內(nèi)存中的。IIS這么做在很大程度上可以提高靜態(tài)文件的訪問性能,在正常情況下只要靜態(tài)文件更新了IIS也會更新緩存。但是如果更新的靜態(tài)文件很多就有可能出現(xiàn)緩存不更新的情況。

彎路:

我遇到這樣一個場景,服務(wù)器循環(huán)更新上萬張股票行情圖片,IIS也會對圖片進行緩存,由于更新的頻率很高,文件很多,就出現(xiàn)了IIS緩存文件超過幾十分鐘都無法更新的情況。

這時候直覺是瀏覽器對文件進行了緩存,于是就在IIS的目錄上設(shè)置Http頭:Cache-Control:no-cache,但是無濟于事,瀏覽器請求服務(wù)器端得到的狀態(tài)號是200,這可以說明瀏覽器確實是從服務(wù)器端得到了新的內(nèi)容,而非讀取瀏覽器本地緩存。

如何禁止IIS緩存靜態(tài)文件(png、js、html等):

通過設(shè)置Http頭不讓瀏覽器緩存的方法在這個場景下是行不通的,因為緩存不是出現(xiàn)的客戶端,而是出現(xiàn)在IIS服務(wù)器上;所以解決問題還需要從IIS本身入手,通過配置Metabase.xml文件禁止IIS緩存相應(yīng)目錄下的靜態(tài)文件。

1. 首先需要設(shè)置IIS允許運行時編輯Metabase.xml文件 

如何禁止IIS緩存靜態(tài)文件(png、js、html)_綠色資源網(wǎng)

打開IIS,然后打開IIS屬性頁,勾選上“允許直接編輯配置數(shù)據(jù)庫”選項

2. 在運行中輸入notepad c:\WINDOWS\system32\inetsrv\MetaBase.xml 打開IIS配置文件

3. 在文件中搜索要配置禁止緩存的虛擬目錄名字,找到類似如下配置節(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配置節(jié)中添加 MD_VR_NO_CACHE=”1“ 屬性

4. 保存配置文件,重啟IIS即可。

如果想配置服務(wù)器上的所有站點都禁用IIS緩存可以通過修改注冊表實現(xiàn):

編輯注冊表中的 DisableStaticFileCache值,0為啟用,1為禁用 ,該鍵值的位置位于:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters

如果該鍵不存在可以新建。

注意事項:

通常情況下我們并不需要禁用IIS的靜態(tài)文件緩存,iis會自動根據(jù)靜態(tài)文件的修改時間自動更新緩存;只有在你遇到非常情況下才有必要禁用IIS緩存。IIS緩存和Http緩存相關(guān)頭沒有任何關(guān)系,在IIS上加緩存頭沒有辦法清除掉IIS對靜態(tài)文件的緩存。

關(guān)鍵詞:IIS,png,js,html

閱讀本文后您有什么感想? 已有 人給出評價!

  • 0 歡迎喜歡
  • 0 白癡
  • 0 拜托
  • 0 哇
  • 0 加油
  • 0 鄙視