当有人访问我的网站时,我想确保浏览器具有我的文件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重写,并且链接正在更改?
我做错了什么?我该如何解决呢? 谢谢!
答案 0 :(得分:0)
我正在使用这种代码来始终获取最新版本:
功能:
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';
⋅⋅⋅
我不知道这是否是最好的方法……但是,那行得通。 我可以在不同位置进行多次内核调用,但是该内核使用的相对路径记录在每个调用脚本中。