【问题标题】:Does URL Rewriting block IIS's static file caching?URL 重写会阻止 IIS 的静态文件缓存吗?
【发布时间】:2013-02-24 15:50:35
【问题描述】:

如果我激活 IIS 重写模块,文件缓存命中计数器不会增加。

我正在通过性能监视器跟踪命中(perfmon.exe / Web 服务缓存/文件缓存命中)

如果我停用重写“文件缓存命中”根据 IIS 缓存算法正常增加。

在这两种情况下,请求的文件都是静态 html 文件。

URL 重写会阻止 IIS 的静态文件缓存吗?

【问题讨论】:

  • 在 IIS 管理器中,转到模块和打开功能。在右侧,单击“查看有序列表”。如果不是,RewriteModule 应该在底部附近。

标签: performance caching iis url-rewriting performance-monitor


【解决方案1】:

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

与 IIS 输出缓存的交互

URL 重写模块按顺序控制 IIS 输出缓存行为 到:

优化利用内核模式和用户模式输出缓存 对重写 URL 的响应,从而提高 Web 的性能 使用 URL 重写模块的应用程序。防止缓存 响应,当缓存逻辑可能由于 URL 重写而被违反时。 该模块通过更改某些缓存来控制输出缓存 属性或完全禁用缓存。该模块不能 如果 IIS 配置已禁用输出缓存,则启用输出缓存或 通过 IIS 管道中的任何其他模块。输出缓存是 控制如下:

  1. 模块始终设置用户模式缓存设置 varyByHeader="HTTP_X_ORIGINAL_URL"。这确保了当用户模式 启用缓存模块会考虑到原始 URL 为缓存条目构造一个键。

  2. 如果重写规则集使用的服务器变量的值要么在整个进程生命周期中保持不变,要么派生自 请求的 URL,规则集被认为是安全的输出缓存。 这意味着 URL 重写模块不会改变现有的缓存 除了在步骤

  3. 中描述的设置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 以包含 规则中使用的所有服务器变量值的串联字符串 设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-13
    • 2014-07-19
    • 2013-05-28
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    相关资源
    最近更新 更多