强制浏览器获取某些源(CSS、JS 等)的最新版本 [重复]
Posted
技术标签:
【中文标题】强制浏览器获取某些源(CSS、JS 等)的最新版本 [重复]【英文标题】:Force browser to get last version of certain sources (CSS, JS, etc.) [duplicate] 【发布时间】:2019-11-21 09:07:04 【问题描述】:当有人访问我的网站时,我想确保浏览器具有我的文件 CSS、JS 等的最新版本。我的想法是在我的链接上添加额外的参考:
而不是使用
<script type="text/javascript" src="www.mywebsite.com/my_file.js"><script>
我在打电话
<script type="text/javascript" src="www.mywebsite.com/my_file.js?lastUpdate"><script>
我设法将 lastUpdate 替换为文件的最后修改日期。该链接变为“新”并且浏览器正在更新他关于该文件的缓存。 请注意,我所有的文件都在我的服务器上。
为此,我调用了一个 php 函数(摘要)
function getLastUpdate($link)
if(file_exists($link))
return $link.'?'.filetime($link);
return $link;
并称之为:
echo '<script type="text/javascript" src="'.getLastUpdate('www.mywebsite.com/my_file.js').'"><script>';
一切正常。几乎。函数存储在./code/function.php 它被许多不同文件夹中的许多文件使用。我的问题:我不知道该为 $link 放什么。关于 url 地址,它有时有效,有时无效。如果我给出绝对文件路径(对我来说会更容易),函数 file_exists 返回 false。如果我给出一个相对路径,它有时会起作用,有时不会。我想是因为我正在使用 url 重写,并且链接正在更改?
我做错了什么?我应该如何解决这个问题? 谢谢!
【问题讨论】:
我在这里解释我面临的问题,我是如何尝试解决它的。我愿意以任何其他方式来实现它...例如更改文件的标题? 【参考方案1】:我正在使用这种代码来获取最新版本:
功能:
function file_versioning($file)
$filemtime = filemtime($file);
return "$file?v=$filemtime";
“Core.php”中函数的调用:
$CssLib = file_versioning("$IncDir/Lib.css");
// $IncDir is the relative path from the php script to the "library folder"
echo <<<EOD
<link rel="stylesheet" type="text/css" href="$CssLib" />
EOD;
“index.php”中“核心”的调用:
$IncDir ='.inc/Libs';
require $IncDir.'/Core.php';
⋅ ⋅ ⋅
我不知道这是否是最好的方法……但是,那行得通。 我可以在不同的地方多次调用内核,但是内核使用的相对路径写在每个调用脚本中。
【讨论】:
这与我的代码类似,我们的想法相同。但是你给 $file 什么?绝对的,相对的,等等?如果找不到文件,此函数将返回错误 @FenixAoras 我正在研究它,但想在您的主题关闭之前发布答案。我已经更新了!这种东西对你有用吗? 我试图转换我的所有链接以使它们像这样从根目录开始 > ./code/script.js 但是文件时间有时会抛出错误“stat failed for filelink...” @FenixAoras 也许这就是我使用相对路径的原因...... :)(我不记得确切,已经有一段时间了!)以上是关于强制浏览器获取某些源(CSS、JS 等)的最新版本 [重复]的主要内容,如果未能解决你的问题,请参考以下文章