Extends CClientScript to include a timestamp in references (url) to local files. This timestamp will avoid issues that arise when server files are updated while the navigator's cache still serves the old files.
The client cache will still work, but will be update due to timestamp that changes the URL.
In other words, when you update a js,css,png, ... file that is in a theme directory for instance, the end user will get the update regardless of the state of his local cache, and less dependent on the caching scheme of your hosting provider.
To use this extension, put the class file where you think it is appropriate, but found by Yii, and then update your configuration:
return array( [...] 'components'=>array( [...] 'clientScript' => array( 'class'=>'TimestampClientScript', ), [...] ) [...] );
If you already use other CClientScript replacements, modify TimestampClientScript to extend from your other CClientScript replacement.
The extension also supports script files with parameters (since 1.1). Example:
Yii::app()->clientScript->registerScriptFile( Yii::app()->request->baseUrl . '/js/shared/js/html5Forms.js', CClientScript::POS_HEAD, array( 'data-webforms2-support' => 'date,validation,number', 'data-lang' => $lang, 'defer' => 'defer' ));
This extension determines the local path for the Url and if the local path exists, it will add a time stamp (encoded to make the key shorter).
So your HTML will contain references to local css and js files like this:
<link rel="stylesheet" type="text/css" href="/themes/mytheme/css/main.css?n2kncy">