如何在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"/>
这样,每次版本更改时,客户端的浏览器都会下载新版本
我不会用 smarty 做这个,版本控制应该在 VCS 中完成,这就是 VCS 的用途。结合良好的构建系统,您会变得更好。
我通常的项目工作流程如下所示:
使用phing生成您的构建,我将解释与Subversion的组合,但这也可以适应其他 CVS。
在生成构建时,phingsSvnLastRevisionTask
存储最后一个修订:
<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"/>
为您的项目正确构建构建文件需要一些时间,但是一旦设置好它,它会节省大量时间,您无需过多担心项目将运行的服务器上的缓存条件之上。