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;
        });
      }
    };
  });

これは問題なく動作します。結果は返されますが、ブラウザーが更新されるたびに、304 ではなく 200 応答が返されます。何が間違っていますか?

このクローズドイシューJSON_SINGLE_CALLBACKで述べたように、私も使用してみました。

4

1 に答える 1

0

実際には、変更された一連の問題をチェックする GitHub メソッドを使用していません。コメントアウトしましたが、問題のリストが実際にLast-Modified/If-Modified-Sinceヘッダーを返す (または操作する) かどうかはわかりません。ETagを使用して送り返すことができるヘッダーを返す必要がありますIf-None-Match。それ以外の場合、angular は 1 つのページの読み込みに対してのみキャッシュするため、(ブラウザーでページを更新せずに) テストする方法を追加した場合、たとえば、この要求を再発行するボタンなどを追加すると推測できます。 angular リクエストのキャッシュを参照してください。

次に、ドキュメントを確認して、200 (元の応答) または 304 (偽の応答) が予期されるかどうかを確認する必要があります。また、応答のヘッダーをチェックして、レート制限が変更されているかどうかを確認する必要があります。

于 2013-06-28T02:07:16.357 に答える