如何创建Angular $ http缓存密钥

时间:2015-04-25 01:51:52

标签: angularjs angular-http

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

例如,当我这样做时:

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

缓存显然会起作用。

但是,如果我做了

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

或者更复杂的

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

如果我更改objectParams的某个属性,是否会通过缓存?

更一般的问题是,Angular如何知道何时从缓存服务vs发出新请求?它只比较了url,params,postload还是所有这些?

1 个答案:

答案 0 :(得分:3)

缓存键是buildUrl http.jsurl = buildUrl(config.url, config.params); 函数构建的网址:

?key1=val1&key2=val2

使用config.params中的查询字符串部分$http.get("/search", {cache: true, params: {key1: "val1"}}) // or $http.post("/search", postData, {cache: true, params: {key1: "val1"}}) 创建一个网址。

所以,

"/search?key1=val1"

的缓存密钥为Model B