0

我在控制器中使用了一个小型回购工厂服务:

我的控制器:

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。我做错了什么?

我也尝试过使用这个已关闭问题JSON_SINGLE_CALLBACK中提到的。

4

1 回答 1

0

您实际上并没有使用 GitHub 方法来检查一组已修改的问题。您已将其注释掉,但我不确定问题列表是否实际返回(或使用)Last-Modified/If-Modified-Since标头。它应该返回一个ETag标头,然后您可以使用If-None-Match. 否则,我可能会猜测 Angular 只会缓存单个页面加载,并且如果您添加了一种测试方式(而不在浏览器中刷新页面),例如,重新发出此请求的按钮,您可能请参阅角度缓存请求。

然后,您应该再次检查文档以查看您是否应该期待 200(原始响应)或 304(伪造响应)。您还应该检查响应中的标头以查看您的 ratelimit 是否更改。

于 2013-06-28T02:07:16.357 回答