Spring Boot Web 静态文件缓存处理

今天给大家介绍一种其他的缓存优化方式,通过Spring的缓存机制来缓存静态文件,在Spring Boot中配置静态文件缓存只需要在配置文件中加入下面的配置即可:

.

加上缓存配置后我们访问页面后,被加载过的静态资源就会缓存起来,第二次访问时就不会再去重新请求下载了,通过抓包可以看出确实被缓存了。

.

在Size那列有from memory cache,资源被缓存在浏览器的内存中了,也有的文件会缓存在磁盘中,那就是from disk cache。

优化目的是达到了,但是有一个小问题没有解决,就是如果我的资源文件变了,比如css文件有修改,当我服务端发布之后,用户这边还是会存在缓存。

最好的效果时当文件有改变时或者说当服务端的程序重启之后,用户的请求需要下载服务端的最新资源,没有重启的时候就用缓存的内容,这样就能保证更改后用户能够马上看到最新的内容。

我们可以用版本号来解决这个问题,就是在静态资源后面加上一个版本号,当资源发生变化时将版本号也改变,这样就不会有问题了。

使用方式如下:

.

用法很简单,关键是version这个值从哪来呢?

我们可以在启动前通过代码设置这个值:

.

这个值可以通过main方法的args传进来,在启动项目的脚本中动态传到程序中,启动脚本可以获取程序jar的MD5值作为版本号,这样当服务端的程序重启之后,版本号就变了,缓存就失效了。

然后在过滤器中获取这个值设置到request中就可以在每个页面中使用

.

除了这种参数传递的方式,大家还可以通过自定义打包的插件,在打包的时候将version替换成具体的内容也可以。

上面讲的方式是通过自己去生成version来控制文件的变更,其实Spring Mvc中已经提供了静态文件的版本管理功能,有二种方式,一种是通过资源的MD5来生成版本号,文件内容变了,MD5肯定也变了。另一种是在资源的前面加上版本号的路径。

MD5

在属性文件中增加下面的配置:

.

增加Url的处理:

.

页面中使用方式如下:

.

编译之后就会变成下面的内容:

.

版本号

在属性文件中增加下面的配置:

.

页面中使用方式如下:

.

编译之后就会变成下面的内容:

.

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180228A1HKLW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券