所以我在那里找到了How to force the browser to reload cached CSS/JS files?问题,但是我很难弄清楚答案中写的php函数在做什么错。
module.exports = [a function]
我试图将所有这些内容复制粘贴到我的网站上,更改了.htaccess,创建了php文件,并在项目中建立了指向php echo main.css的正确链接,并做了答案中所建议的一切。但是我的.css文件无法加载,控制台显示有关我的php查询失败的错误。 我的猜测是上面的代码必须以某种方式配置,但是我几乎不了解任何php知识,关于 @param $ file 的这一部分使我感到奇怪,我该怎么写? @param $ file = /css/main.css 还是什么意思?或者我需要将 /css/main.css 放置在每个$ file中? 我无法在该原始主题中评论答案,因此创建了一个新主题
编辑: 我网站的结构是这样的:
<? php
/**
* 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).
*/
function auto_version($file)
{
if(strpos($file, '/') !== 0 || !file_exists($_SERVER['DOCUMENT_ROOT'] . $file))
return $file;
$mtime = filemtime($_SERVER['DOCUMENT_ROOT'] . $file);
return preg_replace('{\\.([^./]+)$}', ".$mtime.\$1", $file);
}
添加到index.html中:
index.html
auto_version.php
css/main.css
我也编辑了第一部分代码,因为它位于我的.php文件中。 如您所见,index.html和auto_version.php都位于网站的根文件夹中,而main.css则位于css文件夹中。我不确定这可能是个问题。
答案 0 :(得分:0)
您是否将其放在html代码中?
<?php
function auto_version($file)
{
if(strpos($file, '/') !== 0 || !file_exists($_SERVER['DOCUMENT_ROOT'] . $file))
return $file;
$mtime = filemtime($_SERVER['DOCUMENT_ROOT'] . $file);
return preg_replace('{\\.([^./]+)$}', ".$mtime.\$1", $file);
}
?>
<link rel="stylesheet" href="<?php echo auto_version('/css/main.css'); ?>" type="text/css" />
将功能代码放在html代码之前非常重要
还要确保您的文件具有.php扩展名。
如果您做到了,或者没有成功,那么我怀疑您的路径是错误的。 继续使用Filezilla或您用来管理网站文件的任何文件,然后从第一个文件夹转到您的CSS文件。然后走那条路。
例如,Linux服务器上我的boostrap css文件的路径是“ /var/www/html/bootstrap/css/bootstrap-theme.css” 您必须从第一个父文件(即网站的根目录“ /”)开始。 如果您的路径看起来不像我的那是正常的,那是完全套利的。
然后将旧路径替换为您想出的新路径
<link rel="stylesheet" href="<?php echo auto_version('/var/www/html/bootstrap/css/bootstrap-theme.css'); ?>" type="text/css" />
如果这不起作用,请告诉我您的PHP错误消息
编辑:这是您auto_version.php文件的外观
<?php
function auto_version($file)
{
if(strpos($file, '/') !== 0 || !file_exists($_SERVER['DOCUMENT_ROOT'] . $file))
return $file;
$mtime = filemtime($_SERVER['DOCUMENT_ROOT'] . $file);
return preg_replace('{\\.([^./]+)$}', ".$mtime.\$1", $file);
}
?>
<doctype html>
etc
<link rel="stylesheet" href="<?php echo auto_version('/css/main.css'); ?>" type="text/css" />
etc
<body>
etc
</body>
<html>