Chrome 缓存覆盖 angularjs 禁用缓存

Chrome cache overriding angularjs disabling of cache

我在缓存方面遇到了一个特殊问题。我目前正在使用 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'}
                });

这里我设置了不使用缓存的所有属性,总是进行新的调用。但我已经看到它选择了相同的值,五分之三。 一段时间后它会自动刷新。服务器端没有缓存问题,因为我没有缓存它。在 Chrome 开发工具中,有一个名为 Disable Cache 的选项,当我检查它时,结果永远不会被缓存,我得到的是最新结果。 我想确保尽管 chrome 上有任何设置,但始终引用的数据应该是 return。 我真的很困惑如何处理这个。如上所述,我已经编写了所有 angularjs 和 http 代码以避免缓存。 任何帮助将不胜感激。

您要获取的文件是什么?在您的 url 末尾它有 /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 路径末尾没有文件名的情况。

不确定在你的情况下这是否是 url 的有效查询字符串,但你可以尝试看看它是否有效。

我遇到了同样的问题,并通过全局声明缓存配置解决了这个问题。这并不理想,但总比添加随机字符串要好。

angular.module('app', [])
  .config(function ($httpProvider) {
    $httpProvider.defaults.headers.common['Cache-Control'] = 'no-cache';
    $httpProvider.defaults.cache = false;
  });