2012-01-05 16 views
1

私は、剃刀でMVC 3を使用しています。私はメインビューから呼び出すいくつかの部分的なビューを持っています。パーシャルビューでは、私はいくつかのDB値を表示したい。私はDB値を変更するときに、キャッシュから古い値を表示します。では、Partial Viewsでキャッシュを止める方法は? THXMVC 3部分的なキャッシュの表示を防止する

答えて

0

上記のコードは、デフォルトとしてキャッシュを使用しない

@Html.Partial("_myPartialView", Model) 

。あなたは

@Html.Partial("_myPartialView", Model) 

を使用している場合は任意のキャッシュなしモデルオブジェクトからのデータを使用して_myPartialViewをレンダリングします。あなたの問題は他の何かによって引き起こされている必要があります。おそらく、Modelオブジェクトを構成するデータを取得するコードは、いくつかのデータ層キャッシュを使用していますか?より多くのコードを投稿すると便利です。

2

あなたのコードはおそらくすべて(デフォルトではブラウザのキャッシュになる可能性がある)キャッシュされていますので、作業中のドーナツ穴のキャッシングが本当に必要です。 チェックアウト:それを行う必要があります http://www.devtrends.co.uk/blog/donut-output-caching-in-asp.net-mvc-3

1
$(function() { 
$.ajaxSetup ({ 
     // Disable caching of AJAX responses 
     cache: false }); 
)}; 

0

設定によっては、部分ビューでキャッシュを無効にする可能性のあるアプローチの1つは、別のクライアント側の呼び出し、つまりjQuery/Ajaxに分割することです。

これ以外のテーマについては、

MVCに戻った後、少し時間がかかりました。部分的なヘッダービューに直接キャッシュ設定を入れてください。ユーザー名を表示するときと同じです。グローバルまたはサーバー側のコードは不要です。

ページがキャッシュされると、問題はログイン後すぐに更新されません。しかし、製品の最初のブラウジングでは必要なときに速度を維持します。私たちの場合、トレードオフ。

@if (Request.IsAuthenticated) 
{ 
     @* when we are authenticated, don't cache any more! *@ 
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
HttpContext.Current.Response.Cache.SetNoStore(); 
HttpContext.Current.Response.Cache.SetNoServerCaching(); 
     @*@Html.Raw(DateTime.Now.ToString())*@ 
@Html.ActionLink("Welcome " + (String.IsNullOrEmpty(((System.Security.Claims.ClaimsIdentity)User.Identity).FindFirstValue("UserName")) ? User.Identity.Name : ((System.Security.Claims.ClaimsIdentity)User.Identity).FindFirstValue("UserName")), "Index", "Manage", routeValues: new { Area = "Store" }, htmlAttributes: new { title = "Manage"}) 
} 
else 
{ 
} 
関連する問題