2012-03-30 74 views
2

我有一個方法返回一個複雜的JSON對象。這是一個沉重的處理方法,我試圖將其存儲在緩存中,並將其保留在那裏,直到對其對象進行修改。緩存不能在客戶端上處理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.ClientVaryByParam = 'none'是行不通的。如果我設置Location = OutputCacheLocation.ServerAndClient,則響應會被正確緩存。

OutputCache不在客戶端存儲JSON信息的任何原因?

+0

客戶端存儲(Cookie和本地存儲)在數據容量方面受到限制。您是希望在每次請求後還是持續存在,或者只是當用戶在頁面上時? – Paul 2012-03-30 18:43:03

+0

這將是很好的堅持任何數量的請求後,但在有限的時間。但是,我可以管理它保持在同一頁面上。 – AdrianoRR 2012-04-02 12:21:44

回答

2

IIRC POST請求未緩存在客戶端上。這個動詞是用來修改服務器上你沒有看到的狀態。如果您從服務器返回一些值而不修改狀態,請使用GET。

+0

不知道。所以如果我將動詞改爲GET,客戶端應該緩存結果的權利?我剛剛在這裏做了一些測試,即使我可以看到Cache-Control從無緩存更改爲private,max-age更改爲200,但頁面並未緩存在客戶端。還有什麼我應該做的? – AdrianoRR 2012-04-02 12:50:28

+0

我做了更多的測試,我可以看到,儘管'Cache-Control:max-age'沒有改變,結果仍然被緩存。我不知道爲什麼我看不到在客戶端到期之前持續多久的緩存。 – AdrianoRR 2012-04-02 13:52:01