使用php动态包含css或Js文件

时间:2014-02-12 05:35:51

标签: php gulp

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

要解决此问题,我决定使用以下Gulp插件:

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

通过将内容哈希附加到文件名

来重命名资产文件
unicorn.css => unicorn-098f6bcd.css

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

2 个答案:

答案 0 :(得分:0)

改为重命名文件,你可以用它发送指纹。如果文件更改,则上次修改也会更改。所以你可以轻松地使用文件的最后修改作为指纹:

public function putStyle($fileName)
{
    $fp = filemtime($fileName); // finger print by file last modified
    $fileName .= '?' . $fp;
    echo '<link rel="stylesheet" href="' . $fileName . '"/>';
}

答案 1 :(得分:0)

我找到了一种动态包含文件的方法。它的速度快(大约需要1.5毫秒)并且工作正常。

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

<强>水珠()

// 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; ?>