AngularJs http 获取缓存不工作
AngularJs http get cache not working
正在开发此应用:
https://billiving-qa.azurewebsites.net/spa1/#/invoices
应该缓存一些 http 调用,但由于某些原因这不起作用:
function getStatuses() {
return $http.get('/v1/definitions/status', { cache: true })
.then(function (response) {
return response.data;
})
}
如果您查看网络,您会看到 'v1/definitions/status' 尽管设置了标志但未缓存。
谢谢
实际上,我看到的是缓存。
Angular 的内部缓存只在应用程序本身的内存中存储东西,它与 browser-cache 不是一回事。 Angular 的缓存在应用程序尝试多次请求相同的 url 时发挥作用,例如在路由之间返回和第四次时。然后它从缓存中获取响应,而不是再做一次 http-request.
它不做的是在浏览器中缓存内容。如果您完全重新加载页面,您也会重新加载应用程序及其内存中的任何内容,例如 Angular 的内部缓存。所以在这种情况下提出了一个新的请求。
如果你想要一个浏览器级别的缓存,以便即使在页面重新加载时它也被缓存,你需要通过服务器的缓存 headers 来处理,Angular 无法控制那。
举个例子,缓存请求1小时
cache-control: public, max-age=3600
正在开发此应用: https://billiving-qa.azurewebsites.net/spa1/#/invoices
应该缓存一些 http 调用,但由于某些原因这不起作用:
function getStatuses() {
return $http.get('/v1/definitions/status', { cache: true })
.then(function (response) {
return response.data;
})
}
如果您查看网络,您会看到 'v1/definitions/status' 尽管设置了标志但未缓存。
谢谢
实际上,我看到的是缓存。
Angular 的内部缓存只在应用程序本身的内存中存储东西,它与 browser-cache 不是一回事。 Angular 的缓存在应用程序尝试多次请求相同的 url 时发挥作用,例如在路由之间返回和第四次时。然后它从缓存中获取响应,而不是再做一次 http-request.
它不做的是在浏览器中缓存内容。如果您完全重新加载页面,您也会重新加载应用程序及其内存中的任何内容,例如 Angular 的内部缓存。所以在这种情况下提出了一个新的请求。
如果你想要一个浏览器级别的缓存,以便即使在页面重新加载时它也被缓存,你需要通过服务器的缓存 headers 来处理,Angular 无法控制那。
举个例子,缓存请求1小时
cache-control: public, max-age=3600