如果我激活 IIS Rewrite 模块 File Cache Hits 计数器不会增加。
我正在通过性能监视器跟踪命中(perfmon.exe / Web Service Cache/File Cache Hits)
如果我根据 IIS 缓存算法停用重写“文件缓存命中”通常会增加。
在这两种情况下,请求的文件都是静态 html 文件。
URL 重写会阻止 IIS 的静态文件缓存吗?
如果我激活 IIS Rewrite 模块 File Cache Hits 计数器不会增加。
我正在通过性能监视器跟踪命中(perfmon.exe / Web Service Cache/File Cache Hits)
如果我根据 IIS 缓存算法停用重写“文件缓存命中”通常会增加。
在这两种情况下,请求的文件都是静态 html 文件。
URL 重写会阻止 IIS 的静态文件缓存吗?
文档声明是的,IIS 重写可以防止文件缓存。
与 IIS 输出缓存的交互
URL 重写模块控制 IIS 输出缓存行为,以便:
优化利用内核模式和用户模式输出缓存对重写 URL 的响应,从而提高使用 URL 重写模块的 Web 应用程序的性能。当 URL 重写可能违反缓存逻辑时,防止缓存响应。该模块通过更改某些缓存属性或完全禁用缓存来控制输出缓存。如果模块已被 IIS 配置或 IIS 管道中的任何其他模块禁用,则该模块无法启用输出缓存。输出缓存控制如下:
该模块始终设置用户模式缓存设置 varyByHeader="HTTP_X_ORIGINAL_URL"。这确保了当启用用户模式缓存时,模块会考虑原始 URL 来构造缓存条目的键。
如果重写规则集使用的服务器变量的值要么在整个过程的生命周期中保持不变,要么派生自请求的 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_INFO"、"APP_POOL_ID"、"APPL_MD_PATH"、"APPL_PHYSICAL_PATH"、"GATEWAY_INTERFACE"、"SERVER_SOFTWARE"、"SSI_EXEC_DISABLED"
3. 如果重写规则集使用上述列表中未提及的任何服务器变量,则该规则集被认为对于输出缓存不安全。这意味着 URL 重写模块将禁用所有请求的内核模式缓存,无论请求 URL 是否被重写。此外,该模块将通过设置缓存属性 varyByValue 来更改用户模式缓存的缓存策略,以包含规则集中使用的所有服务器变量值的串联字符串。