次のIIS書き換えルールがあり、Orchard CMS Webサイト内の開発サーバーとライブサーバーの両方で希望どおりに動作しますが、有効にすると、サイトのページの読み込みが大幅に遅くなります。これは、ルールを有効化/無効化することで簡単にテストでき、パフォーマンスが低下しているように見えます(つまり、あるルールが他のルールよりも多いわけではありません)。
これらは私がこれまでに作成した最初のルールであるため、いくつかの明らかな落とし穴があるかもしれないと思いますが、私の研究では何も発見できませんでした。
それで、簡単に言えば、ページの読み込み時間が遅くなる原因は何でしょうか(...おそらく注文ですか?):
<rewrite>
<rules>
<rule name="www to non-www" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_Host}" pattern="^www.(.*)$" />
</conditions>
<action type="Redirect" url="http://{C:1}/{R:0}" redirectType="Permanent" />
</rule>
<rule name="Dont Process Any Further" enabled="true" stopProcessing="true">
<match url="^(about-us$|contact$|copyright$|privacy$|terms$|book$|surroundings$|
Admin|Media|Themes|Modules|Core|Users|Orchard|source
)" />
<!-- Match url, Line (1): user specific. Line (2): app specific -->
<action type="None" />
</rule>
<!--When root/url requested, goto _domain_index-->
<rule name="Rewrite - Root Hit Redirect" enabled="true">
<match url="^$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_Host}" pattern="^(www.)?brun.azurewebsites.net" negate="true" />
<add input="{HTTP_Host}" pattern="^(www.)?brun.com" negate="true" />
<add input="{HTTP_Host}" pattern="^(www.)?(.*).com" />
</conditions>
<action type="Rewrite" url="_{C:2}_index" />
</rule>
<!--Note: the first pattern in this rule stops the *possible* above rules URL
being rewritten again i.e _domain_index to _domain__domain_index, whilst
also allowing 'View' links from Orchards Dashboard to work-->
<rule name="Rewrite - /page to /_domain_page" enabled="true">
<match url="^(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true">
<!--<add input="{REQUEST_URI}" pattern="/_([a-zA-Z]+)_index$" negate="true" />-->
<add input="{REQUEST_URI}" pattern="/_([a-zA-Z]+)_([a-zA-Z]+)$" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{HTTP_Host}" pattern="^(www.)?brun.azurewebsites.net" negate="true" />
<add input="{HTTP_Host}" pattern="^(www.)?brun.com" negate="true" />
<add input="{HTTP_Host}" pattern="^(www.)?(.*).com" />
</conditions>
<action type="Rewrite" url="_{C:5}_{R:1}" />
</rule>
</rules>
</rewrite>
過去の経験から、問題はメモリ関連であり、書き換えルールごとに正確に関連するものではないことがわかると思います。過去に発見したことは、どこにも文書化されていないが、IISはURL書き換えを実行するためにシステムメモリに大きく依存していることですが、ルールのキャッシュに関係していると思います。これが問題である場合、IISが使用するためにサーバーに追加のメモリをプロビジョニングするという単純な場合があります。
また、IIS書き換えルールに関連する既知のメモリリークもあります。このルールは思い出すことができますが、現時点ではドキュメントに手を加えることができません。この場合、IISをすべての更新、サービスパック、および修正プログラムと共に最新バージョンに更新することで修正できるはずです。その1つは、内部キャッシュをクリーンアップする追加機能を思い出します。