资源文件的版本号管理在web开发过程中是一个既麻烦又重要的问题,但是假如掌握了正确的工具,这项工作做起来就没有那么麻烦了。
南京IT培训中心的技术专家来介绍一下如何做模块管理。大致有以下两种方案:
1、生成文件sign,替换原有文件的名。这里不用考虑页面引用的时间戳问题,但是需要对资源及页面做一次全文查找替换,这对于分散部署的情况下将会非常复杂。
2、配置SeaJS的map对象。很方便,集中管理,但是也存在一些问题,比如:map对象的维护、配置文件引用页面的时间戳问题。
看了上面两种方案后,感觉在我的场景下还存在一些不足之处。不影响开发情况下,开发人员完全不用考虑文件被缓存问题,只需完成编码,提交到构建系统后,一键完成构建和部署。
确定好目标后,既然不想让开发同学关心时间戳问题,那么是否可以将这个工作交给Web服务器来做呢?那么交给服务器来做之后,如何动态的更新最新的资源文件呢?
有问题就好解决,将问题抛出来之后,方案也渐进呈现出来,不啰嗦了,直接上实现方案:
构建工具动态生成.htaccess文件,将构建的资源文件的URL重写列表同步到.htaccess文件中以达到由服务器动态获取新的资源文件。
看了上面的方案是不是很简单,那具体是怎么做的呢?
南京IT培训中心的老师为大家列出了具体的实现步骤。
1. 构建工具在构的时候生成一个与filename.ext对应的filename.ext.sha1的文件,这个.sha1的文件存放filename.ext文件的sha1值。
2. 在构建完成后,构建工具读取.htaccess的模板,并且遍历得到所有资源文件的列表,生成一个对filename.ext对应的filename.ext.sign的文件。
3. 按规则生成RewriteCond和RewriteRule。并将规则数据写到.htaccess文件中并部署到资源文件站点的根据目录。