2

如何在smarty中获得 css、js、图像文件的自动版本控制?

像这样

 <link rel="stylesheet" href="css/main.css" media="all"/>

对此

<link rel="stylesheet" href="css/main354435.css" media="all"/>
4

2 回答 2

2

我想你需要这个来防止客户端缓存。最方便的方法(至少对我来说)是使用类似的东西:

<link rel="stylesheet" href="css/main.css?version=123456" media="all"/>

这样,每次版本更改时,客户端的浏览器都会下载新版本

于 2012-08-08T15:03:45.867 回答
1

我不会用 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"/>

为您的项目正确构建构建文件需要一些时间,但是一旦设置好它,它会节省大量时间,您无需过多担心项目将运行的服务器上的缓存条件之上。

于 2012-08-09T10:04:49.763 回答