MVC缓存数据库图像

问题描述:

我正在使用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或从文件系统加载的其他图像一样。

有没有什么办法让这些图像被缓存? 问候和感谢。

你可以装饰与[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

你有没有试着用OutputCache属性装饰你的操作方法?

+0

比丹尼尔,关键是输出缓存白色参数位置。 – Dani 2013-03-05 16:30:02