3

IIS 7.5 上の ASP.NET 4 アプリケーションで、出力キャッシュに関して奇妙な動作が発生します。他の空のセットアップで問題を繰り返すことができました。これはバグであると確信していますが、Microsoft に報告する方法がわかりません。

IIS のサイトは複数のドメインに応答し、.NET アプリケーションはホスト名を調べ、それに応じてコンテンツを生成します。たとえば、空白ページにリクエスト URL の名前を出力する場合があります。例: www.first-domain.com および www.second-domain.com

web.config には、適切なキャッシング、urlCompression、および httpCompression がすべて system.webServer ノードの下でオフになっています。

aspx ページは、有効期限の将来の日付または max-age 値を使用して、public のキャッシュ制御ヘッダーを設定します。

www.first-domain.com にアクセスすると、「www.first-domain.com」を正常に書き込むページが出力されます。

ただし、www.second-domain.com にアクセスすると、「www.first-domain.com」と書かれたページが出力されます。

failed-request-traces を調べると、System.Web.Caching.OutputCacheModule はキャッシュされた出力を検出し (.config ファイルで機能がオフになっているにもかかわらず)、要求 URL のホスト名が異なっていてもキャッシュが一致したため、 2 番目の要求は、2 番目のドメインの正しいページが表示される前に、max-age/expiry が設定されている限り、最初の要求の結果を別のドメインに出力します。

cache-control を private に設定するか、web.config の 'OutputCache' モジュールを削除すると、ブラウザに送信される正しい cache-control ヘッダーを維持しながら問題が解決しますが、明らかに、次の場合にカーネル キャッシュを利用できません。それが必要。

OutputCacheModule の構成方法に関する MSDN ドキュメントが見つかりません。

他の誰かがこの問題を経験しましたか?カーネルキャッシュを有効にして、URL ホスト名を考慮に入れるにはどうすればよいですか (アプリケーションを IIS の異なるサイトに分離することなく)。

ありがとう。

アップデート:

SetSlidingExpiration を追加しても効果はありません。リクエストのホスト名に関係なく、カーネル キャッシュは引き続き出力をキャッシュするためです。現在の唯一のシナリオは、出力キャッシュを無効にするか、実行する各ドメインでアプリの複製インスタンスを実行することです。これによりサーバーのパフォーマンスが低下することと、出力キャッシュを使用することで得られるパフォーマンスが向上することを考慮して、決定しました。このアプリの出力キャッシュを無効にします。

4

3 に答える 3

2

9 か月経っても回答は得られず、解決策も見つからず、回避策しかありません。おそらく、これは IIS 7.5 以降の次のバージョンで修正されるでしょう...

--

SetSlidingExpiration を追加しても効果はありません。リクエストのホスト名に関係なく、カーネル キャッシュがまだ出力をキャッシュしているためです。現在の唯一のシナリオは、出力キャッシュを無効にするか、実行する各ドメインでアプリの複製インスタンスを実行することです。これによりサーバーのパフォーマンスが低下することと、出力キャッシュを使用することで得られるパフォーマンスが向上することを考慮して、決定しました。このアプリの出力キャッシュを無効にします。

于 2011-10-08T16:36:10.670 に答える