2

我有一个 MVC 应用程序,我想为其缓存一个动作的输出,但有条件地基于业务逻辑。但是我运气不好,我知道 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);
}
4

1 回答 1

0

为什么不想使用 OutputCache,例如使用 VaryByParam?

尝试这个

http://msdn.microsoft.com/en-us/library/system.web.mvc.outputcacheattribute(v=vs.108).aspx

和这个

http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/improving-performance-with-output-caching-cs

于 2013-05-28T15:31:25.903 回答