AngularJS $ http.jsonp缓存

时间:2013-05-26 18:02:13

标签: javascript angularjs coffeescript

我无法缓存JSONP请求。

我尝试了$http.jsonp(url, { cache: true }),但似乎没有效果。

我也试过$http({ method: 'JSONP', url: url, cache: true })无济于事。

相反,我已经使用手动缓存结果(下面非常粗略的工作示例)。

AngularJS可以为我做这个缓存吗?

countries.factory 'Wikipedia',
  ['$http', '$q', ($http, $q) ->
    cache = {}

    getSummary: (country) ->
      if cache.hasOwnProperty(country)
        cache[country]
      else
        summary = $q.defer()
        url = "http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&rvsection=0&rvparse=1&titles=#{country}&format=json&redirects=1&callback=JSON_CALLBACK"

        $http.jsonp(url).success (data) ->
          # process data ....
          paragraphs = ['p1', 'p2']

          # return summary content paragraphs
          cache[country] = paragraphs
          summary.resolve paragraphs

        summary.promise
  ]

1 个答案:

答案 0 :(得分:2)

从版本1.0.7 / 1.1.5开始,$http只支持GET方法请求的缓存。

  • Here是一个关于它的开放github问题的链接。
  • Here是一个封闭的拉取请求,其中包含一些其他信息。

$http documentation的缓存部分仅提到GET请求被缓存。