我正面临着一个特殊的问题。我目前正在使用chrome 我有angularjs服务如下
var url = '/api/acts/' + accountId + '/policy/?filter=NEW_POLICY';
return $http({
method : 'GET',
url : url,
cache : false,
headers: {'disableErrorRedirect': true,'Cache-Control' : 'no-cache'}
});
在这里,我设置了不使用缓存的所有属性,并始终进行新的调用。但我已经看到,5次中有3次采用相同的值。 一段时间后它会自动刷新。服务器端没有缓存问题,因为我没有缓存它。在Chrome Dev工具中,有一个名为Disable Cache的选项,当我检查它时,结果永远不会被缓存,我得到最新的结果。 我想确保尽管chrome上有任何设置,但总是应该返回refereshed数据。 我真的很困惑如何处理这个问题。如上所述,我编写了所有angularjs和http代码以避免缓存。 任何帮助将不胜感激。
答案 0 :(得分:3)
我遇到了同样的问题,并通过全局声明缓存配置来解决它。它不是理想的,但比添加随机字符串要好。
angular.module('app', [])
.config(function ($httpProvider) {
$httpProvider.defaults.headers.common['Cache-Control'] = 'no-cache';
$httpProvider.defaults.cache = false;
});
答案 1 :(得分:0)
您想要获得的文件是什么?在您的网址末尾它有/policy/?filter=NEW_POLICY
但在问号之前和斜杠之后没有实际的文件名。但无论如何......
您始终可以忽略缓存版本,并使用/baseroot/id/postroot/file?random_string
从服务器获取。例如:
var rand_num = Math.random();
var url = '/api/acts/' + accountId + '/policy/filename?v=' + rand_num + '&filter=NEW_POLICY'
或者只是var url = '/api/acts/' + accountId + '/policy/?v=' + rand_num + '&filter=NEW_POLICY'
我猜。就像我说的,我不知道你在url路径末尾没有文件名的情况。
不完全确定这是否是您案例中网址的有效查询字符串,但您可以尝试查看它是否有效。