HTTP.sys 不會快取內容的實例

本文將介紹 HTTP.sys 驅動程式不會快取內容的情況。

原始產品版本:  網際網路資訊服務8。0
原始 KB 編號:  817445

HTTP.sys 不會快取的情況

回應快取會 HTTP.sys 在要求標頭中快取具有適當標誌的任何要求。 這種快取是以每個要求為基礎停用。 不過,如果下列一或多個條件為 true,則 HTTP.sys 不會快取要求回應:

  • 要求並非匿名要求。

  • 要求需要驗證。 (例如,要求包含 Authorization: 標頭)。

  • 網站已設定為使用頁腳。

  • 動態壓縮已啟用並可用於回應。

    注意

    靜態壓縮可搭配快取使用 HTTP.sys

  • 靜態檔案是通用命名慣例(UNC)檔案, DoDirMonitoringForUnc 未啟用登錄機碼。

    注意

    您可以使用 DoDirMonitoringForUnc registry 屬性(DWORD 值)將靜態檔案快取切換回變更通知快取。 這會設定如下:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Inetinfo\Parameters
    預設值為0,或未啟用。 它可以設為1,以根據變更通知來啟用靜態內容的快取。

  • 要求包含查詢字串。

  • 停用快取。 (亦即, MD_VR_NO_CACHE metabase.xml 屬性等於1。)

    注意

    如需詳細資訊,請參閱 MD_VR_NO_CACHE 產品檔中的元資料庫屬性。 若要查看此檔,請參閱DisableStaticFileCache

  • 要求具有實體內文。

  • 為 URL 啟用憑證對應。

  • 已啟用網站的自訂記錄。

  • 要求的 HTTP 版本不是1.1 或1.0。

  • 要求包含 Translate: f 標頭。

  • Expect:不完全包含的標頭 100 continue 會出現。

  • 要求包含 If-Range: 標頭或 Range: 標頭。

    注意

    HTTP.sys只處理整體回應。 HTTP.sys不會嘗試傳送範圍的回應。

  • 回應跨越多個 SendResponse 和多個 SendResponseEntityBody 通話。

    注意

    可快取記憶體的回應必須進入單一的向量 SendResponse 通話。

  • 回應總大小大於每個回應的最大大小。 最大值是由登錄機碼所控制 UriMaxUriBytes ,而預設值為 256 KB。

  • 回應標頭大小大於每個回應的頁首大小上限。 預設值為1024位元組。

  • 快取已滿。 預設大小與電腦中的實體記憶體成正比。

  • 回應的長度為零。

  • 安裝未進行快取感知的網際網路伺服器應用程式介面(ISAPI)篩選器。

    注意

    根據預設,ISAPI 篩選器不會以快取識別。 您必須為 FilterEnableCache 篩選器設定 metabase.xml 屬性,使其可進行快取識別。 預設的 IIS 安裝中的所有篩選都是快取感知。 這包括 FrontPage 和 ASP.NET。
    如需有關 FilterEnableCache 元資料庫屬性的詳細資訊,請查看Windows 10 部署中的新功能

  • 靜態檔案會被當作預設檔存取。 (例如,Default.htm 存在於根目錄中。)依名稱()存取特定檔案 http://contoso.com/default.htm/ 會使 s 快取檔案 HTTP.sy 。 以要求根資料夾()存取網站會 http://contoso.com/ 產生非快取的回應。

    注意

    如果預設檔案清單中所列的第一個頁面無法存取,則 IIS 會嘗試為預設檔案清單中的第二個頁面提供服務。 在此情況下,將不會從快取中提供該靜態頁面。