我有一个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);
}
答案 0 :(得分:0)