包含时间戳(mtime)样式/js版本控制的简单方法


Easy method of including a timestamp (mtime) style/js versioning?

在Kohana中,是否有一种快速简便的方法来使用HTML::style() helper在脚本的情况下,在CSS或JS文件名之后自动包含文件的UNIX时间戳mtime ?

在CakePHP中,我只使用HTML/css帮助器,并在配置中:

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

这样做时:

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

它将输出:

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

我在我的每个项目中都使用这个:

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" />

信用去Kip回答从如何强制浏览器重新加载缓存的CSS/JS文件?

p。记得在你的。htaccess中添加下面的规则:

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