ASP.NET MVC禁用AJAX缓存

5

我使用ajax和部分视图(ascx)加载数据列表,但是遇到了一个问题:我的响应被缓存了。 我尝试在ascx文件中编写Responce.Cache.SetExpires(DateTime.Now.AddDays(-1)),但没有帮助。

在ASP.NET WebForms中,我通过在codebehind中编写Responce.Cache.SetExpires(DateTime.Now.AddDays(-1))来解决此问题。 因此,我想知道在哪里编写Responce.Cache.SetExpires(DateTime.Now.AddDays(-1))以禁用缓存。


除非在控制器操作指令中明确告知,否则不应缓存该内容。也许是浏览器的问题?我听说过IE会缓存Ajax获取请求(但不包括提交请求)。 - RPM1984
是的,页面被浏览器缓存了。但是通过使用SetExpires很容易解决。我如何在MVC中设置SetExpires? - takayoshi
2个回答

12

OutputCacheAttribute 如何帮助禁用缓存? - Philipp Munin
此属性控制 HTTP 响应头(缓存控制、过期等)。 - takepara
1
我觉得在这里给出一个使用OutputCacheAttribute的代码示例会很好: [OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] - Philipp Munin

0
如果您想要异步从服务器加载数据,应该使用ajax POST到控制器方法并返回JsonResult。

1
如果你正在获取数据,就不应该使用POST。将HTTP方法视为CRUD:Post = 创建,Get = 读取,Put = 更新,Delete = 删除。 - Arve Systad
Arve的评论是不正确的。ASP.Net MVC不支持REST操作,使用POST方法根据参数检索数据是完全可以接受的。 - dhochee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接