如果我激活IIS重写模块,文件缓存命中计数器不会增加。
我正在通过性能监视器跟踪命中率(perfmon.exe /网络服务缓存/文件缓存命中率)
如果我停用重写,“文件缓存命中”会根据IIS缓存算法正常增加。
在这两种情况下,请求的文件都是静态html文件。
URL重写是否会阻止IIS的静态文件缓存?
发布于 2014-04-09 11:21:38
The docs state说,是的,IIS重写可以阻止文件缓存。
与IIS输出缓存的交互
URL重写模块控制IIS输出缓存行为,以便:
优化利用重写URL的响应的内核模式和用户模式输出缓存,从而提高使用URL重写模块的Web应用程序的性能。当由于URL重写而违反缓存逻辑时,防止缓存响应。该模块通过更改某些缓存属性或完全禁用缓存来控制输出缓存。如果输出缓存已被IIS配置或IIS管道中的任何其他模块禁用,则该模块无法启用输出缓存。输出缓存的控制方式如下:
中描述的设置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设置为包含规则集中使用的所有服务器变量值的连接字符串,来更改用户模式缓存的缓存策略。
https://stackoverflow.com/questions/15053467
复制相似问题