我在控制器中使用了一个小型回购工厂服务:
我的控制器:
angular.module('repoApp')
.controller('MainCtrl', function ($scope, $repoService) {
$scope.repos = $repoService.getRepos();
});
我的工厂:
angular.module('repoApp')
.factory('$repoService', function ($http) {
var repos =
// $http.defaults.headers['If-Modified-Since'] = 'Sat, 01 Jun 2013 1:31:30 GMT';
$http.jsonp('https://api.github.com/repos/mojombo/jekyll/issues?state=closed&callback=JSON_CALLBACK',
{
cache: true
}
);
// Public API here
return {
getRepos: function () {
return repos.then(function(repoData) {
return repoData.data.data;
});
}
};
});
这很好用 - 我得到了结果,但每次浏览器刷新时,我最终得到200响应而不是304.我做错了什么?
我也尝试使用this closed issue中提到的JSON_SINGLE_CALLBACK
。
答案 0 :(得分:0)
您实际上并没有使用GitHub方法来检查一组修改过的问题。您已将其注释掉,但我不确定问题列表是否实际返回(或使用)Last-Modified
/ If-Modified-Since
标头。它应返回ETag
标题,然后您可以使用If-None-Match
发回。否则,我可能会猜测,角度只会缓存单页面加载,如果你添加了一种测试方式(没有在浏览器中刷新页面),例如,重新发出此请求的按钮,你可能会请参阅角度缓存请求。
然后你应该检查文档,看看你是否应该期待200(原始响应)或304(假响应)。您还应该检查响应上的标题,看看您的ratelimit是否发生了变化。