每次 Gulp 更改 CSS 或 JS 文件时,它都会保持输出文件名与以前相同。浏览器如何知道文件已更改并需要重新加载 css 和 JS 文件?
为了解决这个问题,我决定使用以下 Gulp 插件:
https://github.com/sindresorhus/gulp-rev
它通过将内容哈希附加到文件名来重命名资产文件
unicorn.css => unicorn-098f6bcd.css
有没有办法动态地使用 php 包含资产文件?每次添加新内容时,资产名称都会更改。
每次 Gulp 更改 CSS 或 JS 文件时,它都会保持输出文件名与以前相同。浏览器如何知道文件已更改并需要重新加载 css 和 JS 文件?
为了解决这个问题,我决定使用以下 Gulp 插件:
https://github.com/sindresorhus/gulp-rev
它通过将内容哈希附加到文件名来重命名资产文件
unicorn.css => unicorn-098f6bcd.css
有没有办法动态地使用 php 包含资产文件?每次添加新内容时,资产名称都会更改。
而是重命名文件,您可以使用它发送指纹。如果文件更改,最后修改的也会更改。因此您可以轻松地使用文件的最后修改作为指纹:
public function putStyle($fileName)
{
$fp = filemtime($fileName); // finger print by file last modified
$fileName .= '?' . $fp;
echo '<link rel="stylesheet" href="' . $fileName . '"/>';
}
我找到了一种动态包含文件的方法。它的速度很快(大约需要 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; ?>