重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
缓存是HTTP协议的一个强大功能,但由于某些原因,它主要用于静态资源,如图像,CSS样式表或JavaScript文件,但是,HTTP缓存不仅限于这些,还可以将其用于动态计算的资源。
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、做网站、成都外贸网站建设公司、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的咸丰网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!通过少量工作,您可以加快应用程序并改善整体用户体验。在本文中,您将学习 如何使用内置的HTTP响应缓存机制来实现缓存SpringBoot控制器的结果 。
1.如何以及何时使用HTTP响应缓存?
您可以在应用程序的多个层上进行缓存。数据库具有其缓存存储,Web客户端也在其需要重用的信息。HTTP协议负责网络通信。缓存机制允许我们通过减少客户端和服务器之间传输的数据量来优化网络流量。
何时优化: 当Web资源不经常更改或您确切知道何时更新时 ,就可以使用HTTP缓存进行优化。一旦确定了HTTP缓存的竞争者,就需要选择合适的方法来管理缓存的验证。 HTTP协议定义了几个请求和响应标头,您可以使用它们来控制客户端何时清除缓存 。
选择适当的HTTP标头取决于您要优化的特定情况。但是无论用例如何,我们可以根据缓存的验证发生在哪里进行缓存管理选项的划分。
2.客户端缓存验证
当您知道请求的资源在给定的时间内不会更改时,服务器可以将此类信息作为响应标头发送到客户端。基于该信息,客户端决定是否应该再次获取资源或重用先前下载的资源。
有两种可能的选项可以描述客户端何时应该再次获取资源并删除存储的缓存值。所以让我们看看他们是如何运行的。
HTTP缓存在固定的时间内有效:如果要 阻止客户端在指定时间内重新获取资源 ,则应该使用 Cache-Control 标头,可以在其中指定应该重新获取所获取数据的时间。
通过将标头的值设置为 max-age =
为了设置在Spring的控制器中的HTTP标头,就要在RESTContoller用 ResponseEntity 包装类 。
@GetMapping("/{id}") ResponseEntitygetProduct(@PathVariable long id) { // … CacheControl cacheControl = CacheControl.maxAge(30, TimeUnit.MINUTES); return ResponseEntity.ok() .cacheControl(cacheControl) .body(product); }