gpt4 book ai didi

AngularJS - 浏览器缓存 JSON 数据

转载 作者:行者123 更新时间:2023-12-04 18:09:40 24 4
gpt4 key购买 nike

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

问题:

当我跳出我的应用程序到不同的域或页面,然后当我使用历史返回按钮返回我的应用程序时,我只返回 JSON。当我跳出我的应用程序浏览历史时会发生同样的情况,然后当我使用前进按钮转到我的应用程序时,我再次只返回 JSON。后退/前进在我的应用程序中工作正常,只有当我转到不同的域时才会发生。

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

如果你访问这个网址,你就会明白我在说什么 - http://test.deving.cz/admin/prihlasit/ .然后往回走,再往前走。

我的设置:

我的应用程序配置为使用 HTML5 历史 API。对于以 mydomain.com/admin/开头的 url,我总是返回一个包含 angular 的 index.hmtl。然后对于我的应用程序中的每个其他 url,发送两个请求。一种用于模板,一种用于数据(JSON)。

例子:
$routeProvider.when('/admin/page/', {controller: 'PageListCtrl', templateUrl: '/templates/page/list/', resolve: 'PageListCtrl.resolve'})
页面列表控件:

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;
}
}

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

最佳答案

我遇到了同样的问题。
虽然我找到了解决此问题的方法,但我认为必须存在更好的解决方案。
因此,如果您有更好的解决方案,请告诉我。

我使用的服务器端框架是 Rails。
所以我添加以下代码

  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 来决定是否添加以上行。

关于AngularJS - 浏览器缓存 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17593491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com