2011-12-15 14 views
0

MCV3 OutputCacheを使用して、データがいっぱいのテーブルがあるページの読み込み時間を短縮しています。私は、ajaxメソッドを使用して情報を更新し、DOMを操作して、変更が成功したことをユーザーに示します。これは、ページが読み込まれ、キャッシュされたデータセットが更新されたデータセットの代わりに読み込まれるまでは問題ありません。C#MVC3プロジェクトでOutputCacheを使用する

更新メソッドが呼び出されたときに、キャッシュをクリアまたは削除して、ページのリロード時に新しい更新データで再作成します。次のように

私のコードは次のとおりです。

[OutputCache(CacheProfile = "VideoIndexView")] 
public ActionResult Index() 
{ 
    ... 
    return View(model); 
} 

答えて

0

あなたは、画面のテンプレートをロードし、実際のデータを取得し、ロードするためにAJAXを使用するようにIndexアクションの結果を使用することができます。

[OutputCache(CacheProfile = "VideoIndexView")] 
public ActionResult Index() 
{ 
    ... 
    return View(model); // Really only return a model that is okay to be cached 
} 

public ActionResult LoadData() 
{ 
    var Result = // Load the data 
    ... 
    return Json(Result); // Don't forget to allow GET here if you're using HTTPGET 
} 

// Or... 

public ActionResult LoadData() 
{ 
    var Result = // Load the data 
    ... 
    return PartialView (Result); 
} 

この方法で、Indexはうまくキャッシュすることができ、ページがユーザーに提供された後のデータは、ページ内にロードされ、注入されます。 jQueryのようなものを使用する場合は、GETを使用している場合にキャッシュされた結果を使用しないように指示してください。

+0

残念ながら、TOPまたはLIMITコマンドをサポートしていないMS Access DBを使用する必要があります。これは、かなり大きなデータセットを扱うことを意味し、ページや他の部分的なビューとは対照的に、実際にキャッシュしたい行です。 – joepour

+0

はい、しかし、あなたは 'LoadData'メソッドで結果をキャッシュすることもできます。クライアント側が準備ができたら、ちょうどページチャンクを送ります。 –

1

キャッシュからいくつかのURLを消去する場合は、RemoveOutputCacheItem静的メソッドを呼び出すことができます。

+0

引数が 'CacheProfile'の名前である場合、' RemoveOutputCacheItem'は動作しますか? – escist

関連する問題