2013-03-05 80 views
5

我正在使用MVC 4創建網站。對於項目需求,圖像存儲在數據庫中。我有我綁定在我隨行的故事畫面的ID模型的圖,然後我得到的圖像:MVC緩存數據庫圖像

查看:

<img src='<%= Url.Action("ShowImagen", "Home", new {id = item.IdImagen}) %>' style="width: 300px; 
         height: 200px;" /> 

控制器:

public FileResult ShowImagen(int id) 
    { 
     if (id > 0) 
     { 
      var imageData = new NoticiaRepository().GetImagen(id); 
      return File(imageData, "image/jpg"); 
     } 
     else 
     { 
      return null; 
     }   
    } 

有了這個,並使用Chrome進行檢查,我發現當我重新加載頁面時,它不會從緩存中加載圖像,就像.css或從文件系統加載的其他圖像一樣。

有沒有什麼辦法讓這些圖像被緩存? 問候和感謝。

回答

11

你可以裝飾與[OutputCache]屬性您ShowImagen控制器動作:

[OutputCache(Duration = 3600, Location = OutputCacheLocation.Client, VaryByParam = "id")] 
public ActionResult ShowImagen(int id) 
{ 
    ... 
} 
+0

謝謝,我嘗試了OutputCache,但沒有使用Location參數。 – Dani 2013-03-05 16:28:42

+0

謝謝,它完美的作品! – WhatsInAName 2014-01-23 21:10:50

+0

@ darin-dimitrov如何在某個時候使緩存失效? (例如,如果一個圖像的內容改變) – RazvanR 2017-11-01 12:35:21

0

你有沒有試着用OutputCache屬性裝飾你的操作方法?

+0

比丹尼爾,關鍵是輸出緩存白色參數位置。 – Dani 2013-03-05 16:30:02