我正在寻找一种方法来禁用整个ASP.NET MVC网站的浏览器缓存
我找到了以下方法:
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Run Code Online (Sandbox Code Playgroud)
还有一个元标记方法(它对我不起作用,因为一些MVC动作通过Ajax发送部分HTML/JSON,没有头部元标记).
<meta http-equiv="PRAGMA" content="NO-CACHE">
Run Code Online (Sandbox Code Playgroud)
但我正在寻找一种简单的方法来禁用整个网站的浏览器缓存.
如果控制器操作在操作上指定了OutputCache属性,是否有任何方法可以清除输出缓存而无需重新启动IIS?
[OutputCache (Duration=3600,VaryByParam="param1;param2")]
public string AjaxHtmlOutputMethod(string param1, string param2)
{
var someModel = SomeModel.Find( param1, param2 );
//set up ViewData
...
return RenderToString( "ViewName", someModel );
}
Run Code Online (Sandbox Code Playgroud)
我正在考虑使用HttpResponse.RemoveOutputCacheItem(string path)它来清除它,但是我很难弄清楚应该将它映射到action方法的路径.我将再次尝试使用ViewName呈现的aspx页面.
也许我只是手动插入的输出RenderToString入HttpContext.Cache,而是如果我不明白这一个.
更新
请注意,OutputCache是VaryByParam,测试出硬编码路径"/ controller/action"实际上并没有清除outputcache,所以看起来它必须匹配"/ controller/action/param1/param2".
这意味着我可能不得不恢复到对象级缓存并手动缓存输出RenderToString():(
我最近遇到了Last-Modified Header.
我想要一个例子,如何将最后修改的头文件包含在mvc项目中,对于静态页面和数据库查询也是如此?
它与outputcache有什么不同,如果是的话怎么样?
基本上,我希望浏览器清除缓存并自动显示最新的数据或页面,而无需用户刷新或清除缓存.