如何在smarty中获取css,js,图像文件的自动版本控制?
喜欢这个
<link rel="stylesheet" href="css/main.css" media="all"/>
对此
<link rel="stylesheet" href="css/main354435.css" media="all"/>
我想你需要这个来防止客户端缓存。最方便的方法(至少对我来说)是使用以下内容:
<link rel="stylesheet" href="css/main.css?version=123456" media="all"/>
这样,每次版本更改时,客户端的浏览器都会下载新版本
我不会用聪明的人这样做,版本控制应该在 VCS 中完成,这就是 VCS 的用途。结合一个好的构建系统,你会变得更胖。
我通常的项目工作流程如下所示:
使用 phing 来生成你的构建,我将解释与 Subversion 的组合,但这也可以适应其他 CVS。
生成构建时,phings SvnLastRevisionTask
存储最后一个修订版本:
<svnlastrevision
svnpath="/your/installation/svn.exe"
repositoryurl="http://your/svn/repository/url/"
propertyname="svn.lastrevision"/>
我使用 ReplaceTokens
更改代码参数文件中的特殊变量##LASTREV##
。在参数文件中使用它可以更轻松地控制它,我的 php 代码只需要变量,而无需使用以下示例进行过滤。您基本上只需要过滤参数文件。
<filterchain>
<replacetokens begintoken="##" endtoken="##">
<token key="LASTREV" value="${svn.lastrevision}" />
</replacetokens>
</filterchain>
然后移动所有需要此编号的文件(MoveTask
):
<move file="css/main.css"
tofile="css/main${svn.lastrevision}.css"
overwrite="true"/>
为您的项目正确构建构建文件需要一些时间,但是一旦您设置了它,它就可以节省大量时间,并且您无需太担心运行项目的服务器上的缓存条件。