2010-12-11 13 views
6

ASP.NET MVC Webフォームを使用すると、出力キャッシュをコントローラレベルまたはビューレベルのいずれかにできます。 .cshtmlページの "outputcache"についてはどうしたらいいですか?RazorビューエンジンのOutputCache .cshtmlページ

どこにも見つかりませんでした。構文はどこで入手できますか?

+0

こんにちはMicheal;自分で答えを見つけましたか? –

答えて

7

"ASP.NET MVC Webフォーム"とはどういう意味ですか? PageディレクティブのOutputCache属性を参照している場合は、ASP.NET Webフォームです。

ASP.NET MVCコントローラ・アクション・レベルで出力キャッシュを有する:

[OutputCache(Duration=10, VaryByParam="none")] 
    public ActionResult Index() 
    { 
     return View(); 
    } 

これに関係なく、ビューエンジン(ASPX /剃刀)のです。

+0

申し訳ありませんが、私はそれをWebフォームエンジンと言いました。 – ram

+0

「Webフォームエンジン」とはどういう意味ですか? ASP.NET MVCまたはASP.NET Webフォームを使用していますか? Webフォーム= ASPXページディレクティブのOutputCacheディレクティブコントローラアクションのMVC = OutputCache属性。 – RPM1984

+1

ビューで設定することもできます:http://haacked.com/archive/2009/05/12/donut-hole-caching.aspxしかし、かみそりビューエンジンでこれをどうやってやっていますか? – Peter

2

ASP.NET MVC Webフォームを使用すると、出力キャッシュをビューレベルに配置できますが、これは効果がありません。これは古典的なASP.NETの遺産であるため、そこにあります。 ASP.NET MVCでは、出力キャッシュは常にコントローラアクション上に配置する必要があります。

新しく導入されたRazorビューエンジンでは、ビューにキャッシュ値を入れることは意味がないため、そのような可能性はありません。このアトリビュートは常にコントローラアクションに配置する必要があります。

+1

Phil Haackedは同意しないようです:http://haacked.com/archive/2009/05/12/donut-hole-caching.aspx – Peter

+2

@DePeterしかし、あなたはどうやって剃刀でそれをしますか? – AaronLS

2

このテーマに関する修士区の最新記事を参照してください:MVC2 Announcement

Particularyこの部分:

出力キャッシュの改善

ASP.NET MVC 3の出力キャッシュシステム なし [OutputCache]属性をに宣言するときには、より長い時間を指定して VaryByParamプロパティを指定する必要がありますコントローラアクションメソッド。に加えて

alt text

: あなたがきれい以下 のようなコードを使用して、アクションの出力 キャッシュを有効にすることができます - MVC3は今 自動的にあなたのアクションメソッドの明示的な パラメータを持っているときに出力が エントリをキャッシュされた異なります全ページをサポートします 出力キャッシュ、ASP.NET MVC 3 は部分ページキャッシュをサポートしています - は、出力領域をキャッシュして複数の要求にわたって再利用することを可能にします またはコントローラ。サブコンテンツ キャッシュされたエントリは、トップレベルの要求のURL 構造とは対照的に 入力パラメータに基づいて変更されるように[OutputCache]部分ページ・キャッシングのため 挙動を RC2で更新された - キャッシング・シナリオを作る 前のRCでの の動作よりも簡単で強力な両方の

これにより、多くのことが改善されています。

  1. コントローラアクションでOutputCacheを指定するだけで、その特定のアクションの結果を定義された期間キャッシュすることができます。キャッシュは自動的にそれはまた子供アクション(Html.Action(...)を介して呼び出されたもの)
+0

解決策は何ですか?サンプル - スレッドメソッド - スレッドレベルのパラメータを実装していますか?例えば;メソッドは、文字列lang = Thread.CurrentThread.CurrentUICulture.cultureInfo.DisplayNameとしてこのインラインパラメータを持つことができます。このパラメータはメソッド名には意味がありません(名前カテゴリとしてパラメータは1つしかありませんが、結果はカルチャによって異なります)。 –

+0

これは質問は、キャッシュの一部についてのみ説明します。 – twomm

1
に透過的に動作します(通常は望ましい動作です。)定義されたアクションパラメータ
  • によって変化するであろう

    MVC3 +のページ/ cshtmlファイルにページを設定するには、ページのキャッシュを設定するには、コントローラ内のActionメソッドを使用してください - でない主な質問に他の人が答えたように聞こえます。

    しかし、より複雑なシナリオでは、Razor構文を使用してWebCacheオブジェクトにアクセスできます。

    これらのシナリオの中には、古いDonut/Donut (またはDonut/Dounut)キャッシュがあります。 Stack OverflowにあるMVC3スレッドです。

    Denis Huvelleで説明されているNuGetパッケージMvcDonutCachingが見つかりました。これは、3 & 4の問題を解決しましたが、テストしていません。

  • 関連する問題