0

在 Kohana 中,是否有一种快速简便的方法可以使用 HTML::style() 帮助器在脚本的情况下在 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" />

4

1 回答 1

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

学分来自如何强制浏览器重新加载缓存的 CSS/JS 文件的 Kip 答案?

PS。请记住将以下规则添加到您的 .htaccess 中:

RewriteRule ^(.*)\.[\d]{10}\.(css|js)$ $1.$2 [L]
于 2013-05-10T06:42:43.643 回答