2

をOutputCache使用している場合、私は、URLがヒットし、異なる機能によってをお届けするために領域を使用して、単一のASP.NET MVCアプリを持っています。例えばMVC、sub.domain.comで私にwww.domain.comを与え、キャッシュされたページ

  • www.domain.com - ウェブサイトエリア
  • app.domain.com - アプリケーション領域
  • * .domain.com - クライアント領域So

、ポイントは、ということです着信URLに応じて、別のMVCエリアに移動します。これはすべて、いくつかの拡張機能を備えたルーティングを使用して実行され、効果的です。私はWWWのデフォルトルートのインデックス()アクション、私はapp.domain.comヒット次回outputcache有効にした場合

は今、私は、WWWドメインのキャッシュされたバージョンを取得します。私はfiddlerを使ってチェックしました。そのレスポンスは200 OKなので、それは確かにサーバーに当たっています。しかし、私のカスタムルーティングにログインすると、そのコードに当たらないことがわかります。

ので、OutputCacheは、URIをオフに基づいて動作しません、代わりに他のいくつかのアルゴリズムを使用していますか?

おかげ

答えて

0

行動はあなたがキャッシュ(Locationプロパティ)を格納することを決定した場所に依存します。 IFVあなたは、アクションの実行から結果がサーバー上に保存され、以降の要求は、このアクションに行われたとき、サーバーがヒットされ、それが直接キャッシュされたバージョンを返しますサーバー(OutputCacheLocation.Server)にキャッシュを保存しますあなたが記述している動作であるコントローラアクションを実行することなく実行できます。

キャッシュをクライアントに保存すると(OutputCacheLocation.Client)、キャッシュはクライアントブラウザに保持されます。この場合、後続のリクエストが同じアクションに対して行われた場合、クライアントはサーバーにアクセスしなくなりますが、キャッシュからページを直接処理します。そして、あなたがあなたのブラウザでF5をヒットした場合、サーバーがヒットしますので、あなたは、特定のページのキャッシュを有効期限が切れることを覚えておいてください。

+0

返信いただきありがとうございます。デフォルトに設定されているため、サーバーに設定されているものとします。私はまだそれが正しいとは思わないが、キャッシュされたバージョンの別のアクション(sub.domain.comはwww.domain.comのキャッシュページを返す)を返すためです。 – James

+0

@ジェームズ、確かに、それは正しいように見えません。あなたはルーティングのためのカスタムコードを述べました。これがどのように行われたかを示してください。 –

+0

私は、特定のドメインにルートを制限するために、DomainRoutes http://blog.maartenballiauw.be/post/2009/05/20/ASPNET-MVC-Domain-Routing.aspxを使用しています。これらのルートは各AreaRegistrationに登録されています – James

1

[OutputCache(VaryByHeader = "ホスト")]に役立つはずです。

関連する問題