Spr*_*ing 10 javascript java caching http angularjs
在前端我使用AngularJS"$ resource"作为GET请求,在后端我使用SpringMVC公开我的方法Restful方式.
现在我想只缓存一些我的GET请求.我注意到有一些方法可以像使用$ cacheFactory一样.或类似的东西:
return {
Things: $resource('url/to/:thing', {}, {
list : {
method : 'GET',
cache : true
}
};
Run Code Online (Sandbox Code Playgroud)
请注意,这也可能是一个带有一些缓存参数的简单ajax调用,而不是必须使用angularJS.
所以不是在客户端上使用这种方法,我想知道它可以在服务器上完成,只需通过Java在Response头中设置缓存,有些事情如下:
response.setHeader("Cache-Control: max-age=2592000");
Run Code Online (Sandbox Code Playgroud)
这两种方法有什么区别?应该采用哪种方法?
PS这个问题不是服务器端缓存与客户端缓存问题,我只需在服务器中设置HTTPResponse头即可.
我相信你指的是2个不同层的缓存.
Angular的缓存(请参阅$ cacheFactory)是一个内存中的Javascript缓存.缓存将数据存储在Javascript对象中.您可以在客户端中控制它们.缓存将不会保留,因为一旦您导航到另一个网页或刷新它将会消失,除非您实现保存到本地存储的自定义缓存.
Cache-Control
响应中的参数控制浏览器缓存.您无法直接从Javascript操作此缓存.但是,如果正确设置缓存标头,它将会跨会话保留数据.它还允许任何可能为多个客户端提供服务的中间代理知道他们是否可以缓存请求,从而比Javascript缓存更能减少总体流量.
至于应该使用哪种方法,我会说通常依赖于浏览器缓存,因为它的级别要低得多,并且会在会话中持续存在.如果您需要更多地控制只能在客户端合理获得的缓存内容,那么请使用Javascript缓存.或者你可以只启用它们并获得两者的好处,并承担额外的代码维护/复杂性.
归档时间: |
|
查看次数: |
749 次 |
最近记录: |