MVC3 – 正在缓存AJAX部分视图……我无法阻止它

我正在使用MVC3 – 我有一个javascript函数,它使用jQuery get()从控制器获取PartialView。

问题是它被缓存,我不断回收陈旧的内容。

我已经在动作上尝试了[OutputCache(Duration = 0)],认为它会阻止它的缓存,但没有快乐。 可能是客户端缓存它吗?

编辑:

我最近一直在使用另一种方法来防止缓存,这可能对某些人有用。

$.get("/someurl?_="+$.now(),function(data) { // process data }); 

它显然不是那么干净,但因为每个请求都传递_=12345678 (时间戳),所以它永远不会被缓存。

希望能帮助到你。

浏览器可以自动缓存GET请求,因此您可以使用.ajax()函数,与.get()函数相反,允许您禁用缓存:

 $.ajax({ url: '/foo', type: 'GET', cache: 'false', success: function(result) { } }); 

另一种可能是使用POST:

 $.post('/foo', function(result) { }); 

IE尤其糟糕。 您可以使用以下命令禁用所有AJAX缓存:

 $.ajaxSetup({ cache: false }); 

默认情况下,所有MVC 3部分视图似乎都会自动缓存,但是您可以在控制器中为每个部分视图控制此操作,该部分视图在操作前面使用属性(或在Java中调用的注释)返回:

 [OutputCache(Duration = 0)] public ActionResult PersonEdit(string id) { // do query and fill editvm here return PartialView("PersonEdit",editvm); } 

所以持续时间设置为零。 可能有许多其他属性可以设置为关闭缓存,但到目前为止,这似乎对我个人有用。

感谢你们两个,第一个仍然使用type =“GET”缓存,即使是缓存:’false’指定。 那是使用chrome和本地IIS7。

我结束了

 $.ajax({ url: '@Url.Action("GetMyPartialView","MyController")/' + parameterId, type: 'POST', cache: 'false', success: function (result) { $('#dynamicContentDiv').html(result); } }); 

工作正常,谢谢你的回应。