Spring Boot 控制 HTTP缓存
HTTP协议的缓存策略可以缩短网页请求资源的距离,减少延迟,节省网络流量,并且由于缓存文件可以重复利用,降低网络负荷,加快客户端响应。
如何利用 HTTP缓存 进行一些骚操作呐,这是我最近思考的问题。查看了Spring Boot对HTTP缓存的支持也只有org.springframework.web.filter.ShallowEtagHeaderFilter和plus.wcj.heifer.boot.HeiferBootAutoConfiguration#addResourceHandlers这个两个方式能对HTTP缓存进行骚操作,
- org.springframework.web.filter.ShallowEtagHeaderFilter只支持静态资源的缓存协商,看了一下注释说明只节省带宽,而不是服务器性能。
- plus.wcj.heifer.boot.HeiferBootAutoConfiguration#addResourceHandlers可以支持HTTP API,但是不支持RESTful API。
去GitHub寻找一下有没有支持HTTP缓存的轮子,一顿寻找下来颗粒无收,那索性就自己造轮子吧。
缓存协商机制
维护缓存过期网上有很多的文章,这里就不再赘述了,下面列出一些文章
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching
- https://web.dev/i18n/en/http-cache/
因为HTTP协议的版本问题,就采用了HTTP协议1.0的实现了。
- request
- If-None-Match
- response
- Cache-control <