2012-03-30 14 views
2

複雑なJSONオブジェクトを返すメソッドがあります。それは、キャッシュに保存してオブジェクトの変更が完了するまでそこに残そうとする重い処理方法です。 Location = OutputCacheLocation.ClientVaryByParam = 'none'を設定クライアントでJSON応答のキャッシュが機能しない

[HttpPost] 
[OutputCache(Duration=50, Location = OutputCacheLocation.Client, VaryByParam="none", NoStore = false)] 
     public ActionResult CacheTest() 
     { 
      //retrieves data from database 
      var data = DBContext.GetUserLog(); 

      return Json(new { userLog = data}); 
     } 

が機能していません。私がLocation = OutputCacheLocation.ServerAndClientと設定すると、応答は正しくキャッシュされます。

OutputCacheがJSON情報をクライアント側に保存しない理由は何ですか?

+0

クライアントサイトのストレージ(Cookieおよびローカルストレージ)は、保持できるデータ量の点で制限があります。リクエストごとに、またはユーザーがそのページにいる間にこれを保持しますか? – Paul

+0

リクエストの量が増えた後も、限られた時間で持続するのは良いことです。しかし、私は同じページにとどまるように管理することができます。 – AdrianoRR

答えて

2

IIRC POST要求はクライアントにキャッシュされません。この動詞は、あなたがしていないように思われるサーバー上の状態を変更しているときに使用するためのものです。状態を変更せずにサーバーから値を戻す場合は、代わりにGETを使用します。

+0

それを知らなかった。だから私は動詞をGETに変更すると、クライアント側は結果を正しくキャッシュするはずですか?私はちょうどここでいくつかのテストを行ったことがありますが、Cache-Controlがキャッシュなしから最大200までプライベートに変更されたことがわかりましたが、ページはクライアント側にキャッシュされません。私は何をすべきか? – AdrianoRR

+0

「Cache-Control:max-age」は変更されていなくても、結果はキャッシュされていることに気がつきました。私は期限切れになる前にクライアント側でキャッシュの持続時間がわからないのはなぜか分かりません。 – AdrianoRR

関連する問題