woy*_*aru 4 java spring caching spring-mvc
我希望我的Spring Controller能够缓存返回的内容.我发现了很多关于如何禁用缓存的问题.我想知道如何启用缓存.我的控制器看起来像这样:
@Controller
public class SimpleController {
@RequestMapping("/webpage.htm")
public ModelAndView webpage(HttpServletRequest request,
HttpServletResponse response) {
ModelAndView mav = new ModelAndView("webpage");
httpServletResponse.setHeader(“Cache-Control”, “public”);
//some code
return mav;
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我添加了以下行:httpServletResponse.setHeader(“Cache-Control”, “public”);设置缓存,但在刷新此页面的浏览器中,我仍然得到相同的状态结果:200 OK.我怎样才能达到效果304 not modified?我可以@ResponseStatus(value = HttpStatus.NOT_MODIFIED)在这个方法上设置注释,但它只是状态还是实际的缓存?
引用14.9.1什么是可缓存:
public- 表示任何缓存都可以缓存响应,即使它通常只能在非共享缓存中进行非缓存或缓存.
基本上这Cache-Control: public还不够,它只要求浏览器正常缓存而不是缓存资源,例如通过HTTPS.
HTTP中的缓存实际上非常复杂,它涉及其他几个标头:
Cache-Control - 上面讨论过
Expires - 当给定资源应被视为陈旧时
Last-Modified - 资源上次修改的时间
ETag - 资源的唯一标记,在每个修订版中都已更改
Vary - 基于不同标头的单独缓存
If-Modified-Since,If-None-Match,...
我发现缓存教程非常全面.并非所有标题都是一起使用的,您必须确定自己在做什么.因此,我建议使用内置的解决方案,如EhCache网络缓存.
使用这种低级细节污染控制器也不是一个好主意.
| 归档时间: |
|
| 查看次数: |
1499 次 |
| 最近记录: |