奇妙な問題が発生しました。私の知る限り、アプリケーションプールをリサイクルすることでキャッシュをクリアできます。
ただし、最近のプロジェクトでは、この方法でキャッシュがクリアされていません。代わりに、キャッシュをクリアするためにIISをリセットする必要がありました。
これらのアクションの違いは何ですか?また、私が経験した違いの原因は何ですか?
AppPoolをリサイクルすると、オーバーラップ時間が発生します。異常なワーカープロセスはリサイクルのマークが付けられていますが、すでに受け取った要求は引き続き処理します。 (新しいリクエストは処理しません)。不健康なワーカーは、既存のリクエストがすべて処理されると終了します。
IISリセットすると、すべてのワーカーが終了し、メモリ内のキャッシュがクリアされます。新しいリクエストが受信されると、新しいワーカーが作成されます。
したがって、AppPoolリサイクルとIISリセットの両方がキャッシュをクリアすると思います。私が知っているように、そのキャッシュはアプリケーションドメインに保存されています。異常なワーカープロセスが終了すると、すべてのキャッシュアイテムは破棄する必要があります。
詳細な説明については、次の記事を確認してください。 http://fullsocrates.wordpress.com/2012/07/25/iisreset-vs-recycling-application-pools/
要するに:
AppPool機能のリサイクルはIIS6で導入されました。
IISRESETは、すべてのIIS関連サービスを停止および開始します。すべてのコンポーネントを正常にシャットダウンしようとします。つまり、シャットダウン要求を送信し、サービスがシャットダウンするのを待ちます。すべてのサービスがシャットダウンするのを待ってから、再び起動します。
AppPoolリサイクルは、最初に新しいワーカープロセスを呼び出し、次に古いワーカープロセスをシャットダウンします。これにより、IISRESETよりもダウンタイムが短縮されます。