Angular $http 缓存键是如何创建的

how does Angular $http cache key get created

Angular 文档中没有具体说明 $http 如何检查缓存中的现有密钥。

例如,当我这样做时:

$http.get("/search/11", { cache: true });

缓存显然会起作用。

但是如果我这样做会怎么样

$http.get("/search", { cache: true, params: { age: 11 } });

或者更复杂的

$http.post("/search", objectParams, { cache: true });

如果我更改 objectParams 的其中一个属性,它会绕过缓存吗?

更普遍的问题是,Angular 如何知道何时从缓存中提供服务与发出新请求?它是只比较 url、参数、后加载还是全部?

缓存键是http.js(src)中buildUrl函数构建的url:

url = buildUrl(config.url, config.params);

它创建一个 url 查询字符串部分: ?key1=val1&key2=val2 out of config.params.

所以,

$http.get("/search", {cache: true, params: {key1: "val1"}})
// or
$http.post("/search", postData, {cache: true, params: {key1: "val1"}})

将有一个缓存键 "/search?key1=val1"