AngularJS缓存$ http.post响应

时间:2014-06-18 06:55:19

标签: javascript .net asp.net-mvc angularjs

我已经在AngularJS上摆弄了一段时间,我遇到了一个问题。

每次更改元素(创建/删除/更新)时,都会发送请求并将其保存到数据库中。 问题是我下次刷新页面时没有加载我的更改 - 旧数据作为来自服务器的响应发送而没有我做出的更改。

我在后端使用.NET MVC,在前端使用AngularJS。

任何帮助都将不胜感激。

谢谢!


编辑:

我有理由相信.net是问题 - 在我重建整个解决方案后,它会加载更改。

4 个答案:

答案 0 :(得分:1)

实际上,概念上正确的方法是禁用服务器端的缓存。原因是您有自定义行为,并且您希望在每次回发后加载“新鲜”数据。每当您通过其他客户端调用相同的方法或直接访问该URL时,您应该看到最新的数据。以下是如何禁用缓存的示例摘录:

[OutputCache(Duration=0, VaryByParam="*")]
public JsonResult Details()
{
    //snip snip
    return Json(theResult, JsonRequestBehavior.AllowGet);
}

答案 1 :(得分:0)

尝试这样的事情:

$http.post({
    url: "example.cpm",
    cache: false      //This comes from jQuery
    //etc..
})

答案 2 :(得分:0)

缓存有时处于浏览器级别,您无法强制浏览器不从javascript缓存。这不是特定的角度问题。

如果对某些html / js文件进行缓存,你可以做的就是将时间戳附加到url,这样每当你的url是新的并且没有缓存完成时。

答案 3 :(得分:0)

你是否在浏览器中看到类似的内容,这意味着浏览器正在缓存响应,而你得到的响应并非来自服务器。

enter image description here

此缓存不是javascript级别,而是角度而非浏览器缓存。有多种方法可以确保浏览器不会缓存来自缓存的响应。