【问题标题】:MVC caching database imagesMVC 缓存数据库图像
【发布时间】:2013-03-05 15:13:37
【问题描述】:

我正在使用 MVC 4 创建一个网站。对于项目要求,图像存储在数据库中。我有一个视图,我绑定了模型,其中我有伴随故事的图片的 ID,然后我得到图像:

查看:

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

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

【问题讨论】:

    标签: asp.net-mvc caching


    【解决方案1】:

    您可以使用 [OutputCache] 属性装饰您的 ShowImagen 控制器操作:

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

    【讨论】:

    • 谢谢,我尝试使用 OutputCache,但没有使用 Location 参数。
    • @darin-dimitrov 你怎么能在某个时候使缓存失效? (例如,如果一张图片的内容发生变化)
    • 旧帖子,但仍然有帮助。仅作记录,对于 Dotnet Core,属性现在是 ResponseCache
    【解决方案2】:

    您是否尝试过使用OutputCache 属性装饰您的操作方法?

    【讨论】:

    • 不是Daniel,关键是OutputCache,带有参数Location。
    猜你喜欢
    • 2017-09-09
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多