IIS 為提升效能,預設在記憶體中快取靜態檔案 (js、css、png、html 等)。正常情況下檔案修改時間變更會自動失效快取,但高頻大量更新 (如每秒更新上萬張股票 K 線圖) 時,IIS 快取可能數十分鐘不更新,導致用戶看到舊內容。
設定 HTTP 標頭 Cache-Control: no-cache 僅影響瀏覽器端快取,無法清除 IIS 伺服器端記憶體快取 (回應狀態碼仍為 200,非 304)。
啟用 Metabase.xml 直接編輯權限
notepad C:\WINDOWS\system32\inetsrv\MetaBase.xml 開啟設定檔。<IIsWebVirtualDir> 區塊,例如:<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>
MD_VR_NO_CACHE="1"<IIsWebVirtualDir Location ="/LM/W3SVC/1832041641/root/inc"
...
MD_VR_NO_CACHE="1"
>
</IIsWebVirtualDir>
iisreset 重新啟動 IIS 即時生效。regedit)。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\ParametersDisableStaticFileCache1 (0=啟用快取,1=禁用快取)。iisreset) 生效。Cache-Control、Expires 無法控制 IIS 記憶體快取。<system.webServer> <staticContent> <clientCache cacheControlMode="DisableCache" /> </staticContent> </system.webServer> 在 web.config 中目錄級禁用 (較 Metabase.xml 簡單)。