2013-02-24 61 views
5

如果我激活IIS重寫模塊文件高速緩存命中計數器不會增加。URL重寫阻止IIS的靜態文件緩存嗎?

我通過性能監視器(PERFMON.EXE/Web服務緩存/文件緩存命中)

如果我停用重寫「文件高速緩存命中」根據IIS緩存算法提高正常追查命中。

在兩種情況下,請求的文件都是靜態HTML文件。

URL重寫阻止IIS的靜態文件緩存嗎?

+1

在IIS管理器中,轉到模塊和打開功能。在右側,點擊「查看有序列表」。如果不是,RewriteModule應該接近底部。 – Jamey 2013-10-17 22:23:13

回答

0

The docs state是的,IIS重寫可以防止文件緩存。

與IIS輸出緩存

URL重寫模塊相互作用控制,以便 到IIS輸出緩存行爲:

最佳地利用對重寫 響應內核模式和用戶模式輸出緩存URL,從而提高使用URL重寫模塊的Web應用程序的性能。當緩存邏輯可能由於URL重寫而被違反時,防止緩存響應。 該模塊通過改變某些緩存屬性或完全禁用緩存來控制輸出緩存。如果模塊已被IIS配置禁用,或者 由IIS管道中的任何其他模塊禁用,則模塊不能啓用輸出緩存。輸出緩存 控制如下:

  1. 模塊總是設置用戶模式緩存設置varyByHeader =「HTTP_X_ORIGINAL_URL」。這可確保在啓用用戶模式 緩存時,模塊將原始URL考慮在內,爲 構造緩存條目的密鑰。

  2. 如果重寫規則集使用的服務器變量的值在整個生命週期中保持不變,或者從 派生出請求的URL,則規則集對於輸出緩存而言被認爲是安全的。 這意味着,在步驟

以下服務器變量,在重寫規則中使用時,不要 原因任何效果描述的URL重寫模塊不會改變現有的高速緩存 策略中除了設置varyByHeader其他任何方式輸出緩存策略:

「CACHE_URL」, 「DOCUMENT_ROOT」, 「HTTP_URL」, 「HTTP_HOST」, 「PATH_INFO」, 「PATH_TRANSLATED」, 「QUERY_STRING」, 「REQUEST_FILENAME」, 「REQUEST_URI」, 「SCRIPT_FILENAME」 ,「SCRIPT_NAME」,「SCRIPT_TRANSLATED」, 「UNENCODED_URL」,「URL」,「URL_PATH_信息」, 「APP_POOL_ID」, 「APPL_MD_PATH」, 「APPL_PHYSICAL_PATH」, 「GATEWAY_INTERFACE」, 「SERVER_SOFTWARE」, 「SSI_EXEC_DISABLED」

3。如果重寫規則集使用上面列表中未提及的任何服務器變量,則規則集對輸出緩存而言被認爲是不安全的。這個 意味着URL重寫模塊將禁止所有請求的內核模式緩存 請求URL是否被重寫。另外,在 中,模塊將通過將緩存屬性varyByValue設置爲包含規則 集合中使用的所有服務器變量值的 連接字符串來更改用戶模式高速緩存的高速緩存策略 。