Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取JavaScript中的上次修改时间?_Javascript_Performance_File_Time_Timestamp - Fatal编程技术网

获取JavaScript中的上次修改时间?

获取JavaScript中的上次修改时间?,javascript,performance,file,time,timestamp,Javascript,Performance,File,Time,Timestamp,我使用以下代码在JavaScript中动态添加脚本: function loadJS(file, c, preventCache) { var jsEl = document.createElement("script"); if (typeof preventCache === 'undefined' || !preventCache) jsEl.src = file; else jsEl.src = file + "?" + Math.

我使用以下代码在JavaScript中动态添加脚本:

function loadJS(file, c, preventCache)
{
    var jsEl = document.createElement("script");
    if (typeof preventCache === 'undefined' || !preventCache)
        jsEl.src = file;
    else
        jsEl.src = file + "?" + Math.floor((Math.random() * 10000));
    if (c) { jsEl.addEventListener('load', function (e) { c(null, e); }, false); }
    document.getElementsByTagName("head")[0].appendChild(jsEl);
}

追加
“?”+Math.floor((Math.random()*10000))
将完全禁用缓存。相反,我想做的是附加文件最后修改时间的时间戳。然后可以缓存该文件,但仅当它是最新的。如何有效地获取文件的上次修改时间?

据我所知,这是不可能的:


但是有比随机数更有效的方法。您可以像WordPress一样使用版本号,也可以使用不太定期(每小时等)更改的内容。

包含
loadJS
的文件已经包含用PHP生成的时间戳。我决定在该文件中包含一个变量,该变量包含上次修改脚本的时间。考虑到JavaScript文件是从我的网站中修改的,我可以用PHP自动化所有这些。为此,我将使用
file\u get\u contents
,用时间戳修改行,然后使用
file\u put\u contents
。这可能看起来效率极低,但考虑到只有我能够修改JavaScript文件,而我的客户机都无法修改,那么我想这就足够了。

如果您正确设置缓存控制头,浏览器应该会自动执行此操作。仅当文件自缓存版本以来已更改时,它才可以使用
If Modified Since
请求头下载文件。