18910140161

前端开发静态文件自动添加版本号解决方法

顺晟科技

2021-06-16 10:57:06

498

前端开发不可避免会遇到缓存问题,那么如何给这些静态自动版本添加版本号,使修改后的内容立即生效呢?先说我找到的两种方法:

一、通过获取文件最后修改时间

原理:通过服务器端语言读取文件的最后修改时间,然后将获得的时间作为版本号。

以php为例:

?php函数Autoversion($ file){ if(file _ exists($ _ SERVER[' DOCUMENT _ ROOT '])。$ file)){ $ ver=file mtime($ _ SERVER[' DOCUMENT _ ROOT ']。$ file);} else { $ ver=1;}返回$file。v='。$ ver}?

使用:

link rel='样式表' href='?=Autoversion(' assets/CSS/style . CSS ')?'type='text/css' /

如果该文件存在,将生成类似如下代码:

link rel='样式表' href='assets/css/style.css?' v=1367936144322 ' type=' text/CSS '/

此外,我们可以考虑缓存生成的静态html。当静态文件通过svn更新时,我们可以通过提交后挂钩执行脚本来更新缓存。

二、使用gruntjs生成版本号

如果您的项目使用gum js自动化构建工具,您可以通过安装gum js的插件来生成版本号。

原理:gruntjs插件通过获取文件的md5值(同一文件的md5值是固定的)生成等格式的json文件,然后通过后台程序读取并处理json文件,以文件的md5值作为文件版本号。

推荐使用插件:

grunt-cachebuster:npmjs.org/package/grunt-cachebuster

这个插件可以指定生成json或php格式的文件:

数据

{ ' path/CSS/filename 1 . CSS ' : ' fa6 a5 a 3224 D7 da 66 d9 E0 bdec 25 f 62 cf 0 ',' path/CSS/filename 2 . CSS ' : ' 5b a48 b 6 E5 a7 C4 d 4930 FD a 256 f 411 e 55 b ',' path/js/filename 1 . js ' : ' 08 e 0484 db 917 D5 c6d 9 a 64863d 38d 88

服务器端编程语言(Professional Hypertext Preprocessor的缩写)

?php/** *生成的文件,请勿编辑。这个文件只是为*项目中的静态资产生成的散列的集合。它是由grunt生成的,详见Gruntfile.js。*/return array(' MD5 '=array(' js/main . js '=' AE 65552d 65 CD 19 ab 4 f 1996 c 77915 ed 42 ',' js/vendor/modernizr-2 . 6 . 2 . min . js '=' b 8009 fa 783 ea 3d e 3802 ef CD 29d 7473d 5 ',' img/BG/about . jpg '=' 7e 402 c 1d 64 f 0 b 00 B4 ade 850 f 9015 '

当然也可以自己定义输出音量的格式。具体用法见官方文件。

此外,还有其他类似的插件:

github.com/ktmud/grunt-hashmap

npmjs.org/package/grunt-hash

npmjs.org/package/grunt-assets-versioning

你可以根据自己的需求选择合适的插件,更多的插件可以从gruntjs的官方插件库中找到。

我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航