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还是所有这些?
答案 0 :(得分:3)
缓存键是buildUrl
http.js
中url = 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