2013-05-09 105 views
0

在Kohana中,有沒有一種簡單快捷的方法來使用HTML :: style()助手自動在腳本的情況下在CSS或JS文件名之後包含文件的UNIX時間戳mtime?執行以下操作時包含時間戳(mtime)樣式/ js版本的簡單方法?

Configure::write('Asset.timestamp', 'force');

這樣:

echo $this->Html->css('styles');

它將輸出

在CakePHP,我只想用的HTML/CSS的助手,這在配置:

<link rel="stylesheet" type="text/css" href="/css/styles.css?1338350352" />

回答

1

我在每一個項目中使用這樣的:

class HTML extends Kohana_HTML 
{ 

    /** 
    * Given a file, i.e. /css/base.css, replaces it with a string containing the 
    * file's mtime, i.e. /css/base.1221534296.css. 
    * 
    * @param $file The file to be loaded. Must be an absolute path (i.e. 
    *    starting with slash). 
    */ 
    public static function auto_version($file) 
    { 
     if (!file_exists($_SERVER['DOCUMENT_ROOT'] . '/' . $file)) 
      return $file; 

     $mtime = filemtime($_SERVER['DOCUMENT_ROOT'] . '/' . $file); 
     return preg_replace('{\\.([^./]+)$}', ".$mtime.\$1", $file); 
    } 

} 

在我的模板視圖:

<link type="text/css" href="<?php echo HTML::auto_version('/media/css/global.css') ?>" rel="stylesheet" /> 

現金去從How to force browser to reload cached CSS/JS files?

PS硤答案。請記住在您的.htaccess中添加以下規則:

RewriteRule ^(.*)\.[\d]{10}\.(css|js)$ $1.$2 [L] 
+0

太棒了。這爲我做了詭計! (對不起,我忘了早點回復) – 2013-06-26 04:53:43

相關問題