强制浏览器从php重新加载CSS

时间:2019-07-09 13:01:10

标签: php css

所以我在那里找到了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文件夹中。我不确定这可能是个问题。

1 个答案:

答案 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>