IIS 7.5のASP.NET 4アプリケーションで出力キャッシュに関するいくつかの奇妙な動作があります。私は他の空のセットアップでこの問題を繰り返すことができましたが、これはバグだと確信していますが、それをMicrosoftに報告する方法は不明です。IIS7.5 OutputCacheModuleカーネルキャッシュ 'public' URLを無視する
IISのサイトが2つ以上のドメインに応答すると、.NETアプリケーションはホスト名を検査し、それに従ってコンテンツを生成します。たとえば、空白のページにリクエストURLの名前を表示することがあります。たとえば、www.first-domain.com、およびwww.second-domain.com
web.configには、system.webServerノードの下で適切なキャッシングurlCompressionおよびhttpCompressionがすべてオフになっています。
aspxページでは、キャッシュ制御ヘッダーが公開のために設定されます。これには、期限切れの将来の日付または最大有効期間の値が設定されます。
www.first-domain.comにアクセスすると、「www.first-domain.com」を書き込んだページが出力されます。
しかし、www.second-domain.comにアクセスすると、「www.first-domain.com」と表示されるページが出力されます。
System.Web.Caching.OutputCacheModuleは、要求された要求トレースを調べると、キャッシュされた出力を検出しました(.configファイルによってこの機能が無効になっています)。要求URLのホスト名が異なってもキャッシュが一致しましたしたがって、第2の要求は、第2のドメインの正しいページが現れる前に、最大有効期限/有効期限が設定されている限り、第1の要求の結果を異なるドメインに出力する。
cache-controlをプライベートに設定するか、web.configで 'OutputCache'モジュールを削除すると、ブラウザに送信された正しいキャッシュ制御ヘッダーが維持されますが、明らかに問題は解決しません私がそれを必要とするときのカーネルキャッシュの
OutputCacheModuleの設定方法に関するMSDNのドキュメントが見つかりません。
誰もがこの問題を経験しましたが、どのようにカーネルのキャッシュを有効にして、アプリケーションをIISの異なるサイトに分けることなく、URLホスト名を考慮に入れることができますか?
ありがとうございました。
更新:カーネルキャッシュはまだかかわらず、要求のホスト名の出力をキャッシュとして
SetSlidingExpirationを追加するには、効果がありません。唯一のシナリオは、出力キャッシュを無効にするか、実行する各ドメインでアプリの複製インスタンスを実行することです。出力キャッシュの使用で得られたパフォーマンスの向上と比較して、サーバーパフォーマンスの低下を考慮して、このアプリの出力キャッシュを無効にする。
私は非常に似た問題に直面しています。ただし、出力とカーネルキャッシュを無効にすると、 'Application_BeginRequest'までしか私を得ることができません。コントローラは呼び出されず、 'Application_BeginRequest'で設定したカスタムヘッダーは効果がありません。 – Juliano