-1

我想,当有人访问我的网站时,确保浏览器具有我的文件 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 重写,并且链接正在更改?

我究竟做错了什么 ?我应该如何解决这个问题?谢谢 !

4

1 回答 1

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”中调用“Core”:

$IncDir ='.inc/Libs';
require $IncDir.'/Core.php';

⋅ ⋅ ⋅</p>

我不知道这是否是最好的方法……但是,那行得通。我可以在不同的地方多次调用核心,但是该核心使用的相对路径写在每个调用脚本中。

于 2019-07-11T15:38:50.540 回答