MVC中的条件输出缓存

时间:2013-05-27 20:50:37

标签: asp.net-mvc caching asp.net-mvc-4 outputcache

我有一个MVC应用程序,我想缓存一个Action的输出,但有条件地基于业务逻辑。但我没有太多运气,我知道CacheOutputAttribute,但它是一个静态规则。

具体来说,我有一个用于存储Intranet站点的二进制数据的文档表。当提供的文档类型是图像时,我希望允许浏览器缓存文件,这样就不需要每次都请求它。

我尝试过以下操作但是没有任何运气让浏览器将资产识别为可缓存。

public ActionResult View(Guid id)
{
    /*
        get document from database
    */
    switch (document.ContentType)
    {
        case "image/jpeg":
        case "image/tiff":
        case "image/x-png":
        case "image/png":
        case "image/gif":
            Response.Cache.SetExpires(DateTime.Now.AddMinutes(30));
            Response.Cache.SetCacheability(HttpCacheability.Private);
            Response.Cache.SetValidUntilExpires(true); 
            break;
    }
    return File(document.Data, document.ContentType);
}