【问题标题】:How to invalidate $http call with cache:true when header changes标题更改时如何使用缓存使 $http 调用无效:true
【发布时间】:2014-03-18 05:38:24
【问题描述】:

我正在获取远程资源并缓存结果:

$http({
    method:'GET',
    cache:true,
    url:'...'
});

这很好用。但是,当用户更改 UI 中的语言时,我也会更改所有 AJAX 调用的 Accept-Language 标头。

问题是缓存是基于 URL 完成的,因此如果使用 en-US 作为 Accept-Language 进行调用,则会被缓存,而任何其他调用,无论语言如何,都会从缓存中提供。

我不想在 URL 中添加语言。

我有什么选择?

【问题讨论】:

  • 看看$cacheFactory 并将其包装在一个小服务中,您可以在用户语言更改时使缓存失效。抱歉,这不是一个正确的答案,因为我没有任何示例代码:docs.angularjs.org/api/ng/service/$cacheFactory
  • 这是个好主意。我也可以尝试装饰$cacheFactory。谢谢,乔格。
  • 您可以将其发布为答案,它不必有代码。

标签: angularjs angularjs-http


【解决方案1】:

$cacheFactory 可用于在用户更改语言时使缓存无效。您可以尝试装饰它,或者将其包装在服务中

【讨论】:

    猜你喜欢
    • 2011-05-26
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 2017-11-29
    • 2012-08-26
    • 1970-01-01
    • 2018-06-11
    相关资源
    最近更新 更多