在尝试追踪一些缓慢的页面加载时间时,我开始查看 IIS 工作进程。
我是解释 IIS 工作进程(请求)部分的新手,我注意到出现了重复的模式。
web.config 重写规则为:
<rewrite>
<rules>
<rule name="Rewrite" stopProcessing="true">
<match url="(.+)" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
<add input="{URL}" pattern="^(favicon\.ico|apple-touch-icon.*\.png)$" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?p={R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
这是工作进程中的列表示例。 它们成对出现,显示了 URL 重写过程和 FastCGI 过程。
列表总是像这样成对出现,带有查询字符串中的编码字符,有时还有重复的参数。 这里,编码字符是问号的 %3F,这是奇数,因为它应该是 & 符号。 参数的重复是随机的,并且在该页面的某些请求上,没有重复。 该页面实际上确实起作用,因此我无法理解为什么这些进程出现在队列中并带有奇怪的查询字符串:
/directory/sam-smith?profile_page=1%3Fdetail_page=1%3detail_page=7%3Fdetail_page=7%3Fdetail_page=7%3F
BeginRequest - RewriteModule
/index.php?p=directory/sam-smith&profile_page=1%3Fdetail_page=1%3detail_page=7%3Fdetail_page=7%3Fdetail_page=7%3F
ExecuteRequestHandler - FastCgiModule
重复某些参数而不重复其他参数是否会成为 URL 重写模块问题? 编码字符的出现在这里是正常的事情吗(尽管问号而不是&符号很奇怪)? 感谢您提供任何线索!
您可以使用失败请求跟踪来跟踪完整重写和FastCGI过程中是否存在任何异常,这将生成详细的日志文件,这将帮助您识别问题。