如何在Angular中创建$ http缓存键?

时间:2015-03-12 21:07:14

标签: angularjs http caching

我在Angular JS中更新资源时尝试删除特定的$ http缓存条目,但当我尝试使用URL作为密钥get时,它返回null。我知道资源在缓存中,因为当我下次获取资源时,我得到旧的缓存值而不是更新的值。

var id = 'org.couchdb.user:gareth';
var changes = { ... };
$http.put('/_users/' + id, changes).success(function() {
  $cacheFactory.get('$http').remove('/_users/' + id);
});

为什么没有删除缓存条目?什么是正确的密钥?

1 个答案:

答案 0 :(得分:0)

通过Angular源调试后,事实证明密钥已转义,因此在示例中密钥应为/_users/org.couchdb.user%3Agareth

我更新了代码以使用encodeURIComponent,例如:

$http.put('/_users/' + id, changes).success(function() {
  $cacheFactory.get('$http').remove('/_users/' + encodeURIComponent(id));
});

有关如何构建密钥的更多信息,请查看$http service source中的buildUrl函数。