AngularJS - 浏览器缓存JSON数据

dav*_*ekr 5 browser-cache browser-history angularjs

我正在使用AngularJS框架创建一个应用程序.

问题:

当我将我的应用程序跳出到不同的域或页面然后当我使用历史记录返回按钮返回到我的应用程序时,我只返回JSON.当我跳出我的应用程序浏览历史记录时,同样的情况发生,然后当我使用前进按钮转到我的应用程序时,我再次只获得JSON.后退/前进在我的应用程序中运行良好,只有当我去不同的域时才会发生.

这是为什么?我认为这与缓存一些方法有关,因为当我返回/转发到我的应用程序时,没有请求发送到服务器.

如果你去这个网址,你可以看到我在说什么 - http://test.deving.cz/admin/prihlasit/.然后回去然后前进.

我的设置:

我的应用程序配置为使用HTML5历史记录API.对于启动mydomain.com/admin/的网址,我总是返回包含angular的index.hmtl.然后,对于我的应用程序中的每个其他URL,将发送两个请求.一个用于模板,一个用于数据(JSON).

例:

$routeProvider.when('/admin/page/', {controller: 'PageListCtrl', templateUrl: '/templates/page/list/', resolve: 'PageListCtrl.resolve'})

PageListCtrl:

angular.module('page').controller('PageListCtrl', ['$scope', 'data', function($scope, data) {
    $scope.pages = data;
}]);
Run Code Online (Sandbox Code Playgroud)

解决功能:

resolve = {data: 
            function($http, $q){
                var delay = $q.defer();
                $http.get().success(function(data){
                    delay.resolve(data['data']);
                });
                return delay.promise;
            }
        }
Run Code Online (Sandbox Code Playgroud)

我应该如何配置角度或我的应用程序告诉浏览器不要缓存数据并始终获取index.html然后让angular执行请求?

dav*_*ekr 3

Ajay beniwal 在评论中建议,要阻止浏览器缓存,URL 应该是动态的:

 '/partials/indexpage.html?id=' + new Date().getTime()
Run Code Online (Sandbox Code Playgroud)

因此,如果我在解析函数中执行类似的操作:

$http.get($location.path() + '?id=' + new Date().getTime())
Run Code Online (Sandbox Code Playgroud)

该应用程序和浏览历史记录运行良好。

然而我感觉就像猴子在修补一个严重的问题。因此,如果有人有更好的答案,实际上可以解决问题的原因,请随时回答。