Angular 中的 $http 缓存键是如何创建的?
How is the $http cache key created in Angular?
当我在 Angular JS 中更新资源时,我试图删除特定的 $http 缓存条目,但是当我尝试 get
使用 URL 作为键时它 returns null
。我知道资源在缓存中,因为当我下次获取资源时,我得到的是旧缓存值而不是更新后的值。
var id = 'org.couchdb.user:gareth';
var changes = { ... };
$http.put('/_users/' + id, changes).success(function() {
$cacheFactory.get('$http').remove('/_users/' + id);
});
为什么缓存条目没有被删除?正确的密钥是什么?
通过 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
函数。
当我在 Angular JS 中更新资源时,我试图删除特定的 $http 缓存条目,但是当我尝试 get
使用 URL 作为键时它 returns null
。我知道资源在缓存中,因为当我下次获取资源时,我得到的是旧缓存值而不是更新后的值。
var id = 'org.couchdb.user:gareth';
var changes = { ... };
$http.put('/_users/' + id, changes).success(function() {
$cacheFactory.get('$http').remove('/_users/' + id);
});
为什么缓存条目没有被删除?正确的密钥是什么?
通过 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
函数。