使用 document.createElement('script') 加载 javascript 时如何防止缓存?
How can I prevent caching when loading javascript with document.createElement('script')?
我正在使用 Aaron Smith 在 https://aaronsmith.online/easily-load-an-external-script-using-javascript/ 上描述的技术来动态加载 Javascript 代码。当我第一次创建代码文件时它工作正常,但如果我 更改 该文件,浏览器不会选择新版本。我认为这意味着代码正在浏览器中缓存。
这是我的代码,与 Aaron 的示例几乎相同:
const loadScript = (src) => {
return new Promise((resolve, reject) => {
const script = document.createElement('script');
script.type = 'text/javascript';
script.on load = resolve;
script.onerror = reject;
script.src = src;
document.head.append(script);
});
};
如何确保用户始终加载我的代码的最新版本?我不想每次更新代码文件时都更改它的名称。我也无法要求用户重新配置他们的浏览器以 运行 我的解决方案。
简单地分配一个随机的查询字符串让浏览器认为它是不同的:
const loadScript = (src) => {
return new Promise((resolve, reject) => {
const script = document.createElement('script');
script.type = 'text/javascript';
script.onload = resolve;
script.onerror = reject;
script.src = src + `?dummy=${encodeURIComponent(Math.random())}`;
document.head.append(script);
});
};
每次加载页面时,您都在加载一个 'different' 脚本。
我正在使用 Aaron Smith 在 https://aaronsmith.online/easily-load-an-external-script-using-javascript/ 上描述的技术来动态加载 Javascript 代码。当我第一次创建代码文件时它工作正常,但如果我 更改 该文件,浏览器不会选择新版本。我认为这意味着代码正在浏览器中缓存。
这是我的代码,与 Aaron 的示例几乎相同:
const loadScript = (src) => {
return new Promise((resolve, reject) => {
const script = document.createElement('script');
script.type = 'text/javascript';
script.on load = resolve;
script.onerror = reject;
script.src = src;
document.head.append(script);
});
};
如何确保用户始终加载我的代码的最新版本?我不想每次更新代码文件时都更改它的名称。我也无法要求用户重新配置他们的浏览器以 运行 我的解决方案。
简单地分配一个随机的查询字符串让浏览器认为它是不同的:
const loadScript = (src) => {
return new Promise((resolve, reject) => {
const script = document.createElement('script');
script.type = 'text/javascript';
script.onload = resolve;
script.onerror = reject;
script.src = src + `?dummy=${encodeURIComponent(Math.random())}`;
document.head.append(script);
});
};
每次加载页面时,您都在加载一个 'different' 脚本。