2

使用此应用程序: 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”未缓存,尽管已设置标志。

谢谢

4

1 回答 1

5

实际上,它是我所看到的缓存。

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

它不做的是在浏览器中缓存内容。如果你完全重新加载页面,你也会重新加载应用程序和它在内存中的任何东西,比如 Angular 的内部缓存。所以在这种情况下会发出一个新的请求。

如果您想拥有浏览器级别的缓存,以便即使在重新加载页面时也可以缓存它,您需要使用来自服务器的缓存标头来处理它,Angular 无法控制它。

例如,将请求缓存 1 小时

cache-control: public, max-age=3600
于 2015-10-01T12:41:38.973 回答