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

私はこれを賢くはしません。バージョン管理は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 に答える