我正在使用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; }]);
resolve = {data: function($http,$q){ var delay = $q.defer(); $http.get().success(function(data){ delay.resolve(data['data']); }); return delay.promise; } }
我应该如何配置角度或我的应用程序告诉浏览器不要缓存数据并始终获取index.html然后让angular执行请求?
解决方法
我遇到了同样的问题.
@H_301_43@虽然我找到了解决这个问题的方法,但我认为必须有更好的解决方案.
@H_301_43@所以,如果你有更好的解决方案,请告诉我.
我正在使用的服务器端框架是Rails.@H_301_43@所以我添加以下代码
response.headers["Cache-Control"] = "no-cache,no-store,max-age=0,must-revalidate" response.headers["Pragma"] = "no-cache" response.headers["Expires"] = "Fri,01 Jan 1990 00:00:00 GMT"
这些行将阻止浏览器缓存您的请求,您可以检测请求是否是XHR来决定是否添加上述行.