2

每次 Gulp 更改 CSS 或 JS 文件时,它都会保持输出文件名与以前相同。浏览器如何知道文件已更改并需要重新加载 css 和 JS 文件?

为了解决这个问题,我决定使用以下 Gulp 插件:

https://github.com/sindresorhus/gulp-rev

它通过将内容哈希附加到文件名来重命名资产文件

unicorn.css => unicorn-098f6bcd.css

有没有办法动态地使用 php 包含资产文件?每次添加新内容时,资产名称都会更改。

4

2 回答 2

1

而是重命名文件,您可以使用它发送指纹。如果文件更改,最后修改的也会更改。因此您可以轻松地使用文件的最后修改作为指纹:

public function putStyle($fileName)
{
    $fp = filemtime($fileName); // finger print by file last modified
    $fileName .= '?' . $fp;
    echo '<link rel="stylesheet" href="' . $fileName . '"/>';
}
于 2014-02-12T05:53:50.980 回答
0

我找到了一种动态包含文件的方法。它的速度很快(大约需要 1.5 毫秒)并且运行良好。

PHP 有一个用于搜索文件的本机函数 (glob)。根据 PHP 文档“ glob() 函数根据 libc glob() 函数使用的规则搜索所有匹配模式的路径名,这类似于普通 shell 使用的规则。

全局()

// css path would be the full physical path of your css directory
$cssPath = '/css/*.css';
$stylesheets = glob($cssPath, GLOB_NOSORT);

// link all stylesheets
<?php foreach($stylesheets as $stylesheet): ?>

     <link rel="stylesheet" href="css/<?=basename($stylesheet)?>">

<?php endforeach; ?>
于 2014-03-09T01:04:58.377 回答