我有一个 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);
}