Как получить автоматическое управление версиями для CSS, JS, файлов изображений в Smarty?

Как получить автоматическое управление версиями для CSS, JS, файлов изображений в Smarty?

как это

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

к этому

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

2 ответа

Я полагаю, это необходимо для предотвращения кэширования на стороне клиента. Наиболее удобный способ (по крайней мере для меня) - использовать что-то вроде:

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

Таким образом, при каждом изменении версии браузеры клиентов будут загружать новую версию.

Я бы не стал этого делать с Smarty, управление версиями должно выполняться в 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"/>

Требуется некоторое время, чтобы правильно построить файл сборки для вашего проекта, но как только вы его настроите, это сэкономит много времени, и вам не нужно слишком беспокоиться об условиях кэширования на сервере, на котором будет работать ваш проект. на.

Другие вопросы по тегам