使用$ http.get

时间:2016-02-04 07:40:08

标签: angularjs json ajax caching

我正在学习Angular,目前我正在尝试将JSON文件正确加载到我的代码中,因此我可以迭代它并显示所有结果。我可以设法做到这一点,但是一旦我更改了JSON,又添加了三个注册表,我看不到它们。

这是因为我正在缓存我的JSON,正如我在开发人员控制台的网络部分所看到的那样。

我尝试更改我的数据服务服务(使用$ q进行异步请求以及$ http),因此我可以配置$ http对象:

app.factory('dataService', ["$http", "$q", function($http, $q) {
        return {
            getAll: getAll
        }

        function getAll() {
            var defered = $q.defer();
            var promise = defered.promise;

            $http({
                url: "data.json",
                cache: false,
                method: "GET"

            })
                .success(function(data) {
                    defered.resolve(data);
                })
                .error(function(err) {
                    defered.reject(err)
                });

            return promise;
        }
    }]);

这一直在工作,但没有停止缓存我的JSON。我删除了我的缓存并再次执行了应用程序,我得到了新的结果,但是一旦我添加了更多的注册表,它就会被缓存。

所以,问题是......我怎样才能避免缓存我的JSON文件?

1 个答案:

答案 0 :(得分:2)

最好的办法是在返回data.json时指定正确的Cache-Control标头。

但是,如果您通过附加随机查询字符串参数AKA cache buster,很少或根本无法控制可以强制获取新资源的服务器。在角度情况下,这可能看起来像:

$http({
  url: "data.json?_cache_buster=" + new Date().getTime(),
  method: "GET"
})