AngularJs http获取缓存不起作用

时间:2015-10-01 12:20:51

标签: angularjs angular-cache

使用此应用: 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'虽然设置了标志,但没有缓存。

由于

1 个答案:

答案 0 :(得分:4)

实际上,它是从我能看到的内容中缓存的。

Angular的内部缓存只会在应用程序本身的内存中存储东西,它与浏览器缓存不同。当应用程序尝试多次请求相同的URL时,Angular的缓存就会起作用,例如在返回路由时和第四次路由之间。然后它从缓存中获取响应,而不是执行另一个http请求。

它不做的是在浏览器中缓存内容。如果您完全重新加载页面,您还会重新加载应用程序及其在内存中的任何内容,例如Angular的内部缓存。因此,在这种情况下,会发出新的请求。

如果你想拥有一个浏览器级别的缓存,即使在重新加载页面时也要缓存它,你需要通过服务器的缓存头来处理它,Angular无法控制它。

例如,将请求缓存1小时

cache-control: public, max-age=3600