路由更改后,Angular默认$ http缓存将被删除

时间:2016-04-16 08:01:02

标签: angularjs angular-ui-router angular-cache

我在其中一个服务中使用Angular的默认$http缓存。当用户从视图导航到另一个视图时(我使用ui-router),缓存无效,并且将从中删除所有项目。我想不要在我的应用程序的整个生命周期中使缓存无效。

修改 例如,该工厂在导航到另一个路由后不返回缓存结果,并且它调用服务器api来获得结果:

cardModule.factory("myFactory", function ($http) {
    return {
        getAll: function () {
            return $http.get("all", { cache: true })
        }
    }
});

如何防止默认缓存在路由更改后从自身中删除项目?

3 个答案:

答案 0 :(得分:2)

我找到了问题的根源。这是我自己的错。我有一个代码,在状态改变后清除缓存。默认的角度$ http缓存没有问题。

答案 1 :(得分:1)

我会留下这个评论,但我还没有足够的分数......

你可以试试某种形式的回忆吗?换句话说,在范围上有一个模型,那么,如果模型未定义,则触发$ http调用?类似的东西:

var ctrl = this;

ctrl.product = undefined; // or null

if (ctrl.product === undefined) { // or null
  $http.get(...).then(function(resp) {
     ctrl.product = resp.data;
  };
};

这样模型初始化,只调用一次。可能的缺点是if语句可能会使效率低下。

我没有对此进行过测试,只是把想法抛弃了。我对这个问题也很感兴趣。

答案 2 :(得分:0)

这不应与ui-router$http相关。以下是您需要确认的一些事项:

  1. 您的服务器(服务于您的资源)是否正在设置缓存标头
  2. 确保您没有使用Ctrl + F5刷新页面
  3. 如果您使用的是Chrome浏览器,请确保取消选中Disable cache设置