首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >URL重写是否会阻止IIS的静态文件缓存?

URL重写是否会阻止IIS的静态文件缓存?
EN

Stack Overflow用户
提问于 2013-02-24 23:50:36
回答 1查看 2.6K关注 0票数 7

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

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

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-09 11:21:38

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_INFO","APP_POOL_ID","APPL_MD_PATH“"APPL_PHYSICAL_PATH","GATEWAY_INTERFACE","SERVER_SOFTWARE","SSI_EXEC_DISABLED“

3.如果重写规则集使用上述列表中未提及的任何服务器变量,则认为该规则集对于输出缓存是不安全的。这意味着URL重写模块将禁用所有请求的内核模式缓存,而不管请求URL是否被重写。此外,该模块还将通过将缓存属性varyByValue设置为包含规则集中使用的所有服务器变量值的连接字符串,来更改用户模式缓存的缓存策略。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15053467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档