关于Web项目中静态资源的版本控制

原创
2014/08/08 01:09
阅读数 913

    静态资源的版本对于个人项目来说意义不大,但对于企业级项目的开发以及持续的维护很有用处.通常来讲发布在生产环境中的项目,都会进行一些前端性能的优化,比如配置资源缓存以及ETag等.当你更新了项目资源,如何保证线上资源也同步到最新,以及如何更新缓存,这些问题就需要一个静态资源版本来解决.

    最有效的解决方案,就是修改其所有的链接,这样全新的请求将从原始服务器下载新的内容.

    比较常见修改资源链接的方式就是在url后面加上时间戳或者在文件名上加标记.类似下面这种:

<script src="a.js?date=20140729"></script>
<script src="a.js?v=1.1.0"></script>

    这是一种比较常见且古老的方式,优点是比较容易实现并且方便,缺点就是它是同名覆盖的,很容易造成一个已经换了,另一个还没有换的情况.另外一个就是CDN工具,这种方式很容易被人推断出你的资源版本号规律.

   另外一个问题就是这种方式不便于管理,如果非要使用这种方式至少也要用一款自动化的工具来解决版本号的问题.另一种现在很常用的比较好的方式就是基于文件内容的hash版本.

   基于文件内容的hash版本控制的主要思想就是就是给文件标识的不再是时间戳一类的东西,而是一个基于文件内容生成的hash值.它的特点就是每当有文件变化的时候才会生成新的hash值,所以如果没有文件变化它的hash值就是原来的.这样的好处就是旧有的文件还可以继续使用原来的缓存,只有新改动的文件才会从服务器上从新下载.

    具体的做法可以是在压缩静态文件的时候,生成hash值,然后拼接到文件的name中,然后在html中引入这些资源.具体的实现可以通过工具,比如gulp或者grunt.

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部