基本上我想做的是一个完整的服务器端缓存,并禁用客户端缓存。
[OutputCache(Duration = 3600)]
public ActionResult getImage(string imagePath)
{
Response.AddFileDependency(imagePath);
return base.File(imagePath, "image/jpg");
}
当“刷新”页面时,缓存工作得很好。它返回“状态:304 Not-Modified”,并在手动更改文件时切换到“状态:200”。
但是,当通过超链接(RedirectToAction)从另一个页面访问来呈现页面时,或者通过单击 url 栏并按 enter 来呈现页面时,即使文件已更改,它也会返回“状态:200(缓存)”。
我尝试了以下组合
- Response.Cache.SetETagFromFileDependencies();
- Response.Cache.SetLastModifiedFromFileDependencies();
- Response.Cache.SetCacheability(HttpCacheability.Server);
- Response.Cache.VaryByHeaders["If-None-Match"] = true;
但没有任何效果。
如果有人能引导我找到解决方案,那就太好了。