获取JavaScript中的上次修改时间?
我使用以下代码在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.
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
请求头下载文件。