是什么导致源脚本无法加载然后再次加载?
What makes a source script not loading and then loading again?
当使用具有 src
属性的 <script>
标签时,应该期望它下载:
<script src="https://unpkg.com/neovis.js@2.0.0-alpha.9/dist/neovis.js"></script>
不过最近下载失败,我也没找到原因。可能可靠的解决方法是,当发生这种情况时,我将其更改为:
<script>
function cdnLoaded() {
console.log('loaded');
}
function cdnError() {
console.log('not loaded');
// do error handling here
}
</script>
<script onload="cdnLoaded()" onerror="cdnError()" async src="https://unpkg.com/neovis.js@2.0.0-alpha.9/dist/neovis.js"></script>
此时,控制台显示已加载但实际上并未加载。但之后当我将其恢复为:
<script src="https://unpkg.com/neovis.js@2.0.0-alpha.9/dist/neovis.js"></script>
然后它再次工作。这在两个浏览器(Edge 和 Firefox)中出现过两次,我还没有机会再次测试。
造成这种奇怪行为的原因是什么?这可能是一种缓存吗?
按文件名浏览器缓存脚本。
可能 adding/removing onload 和 onerror 属性强制浏览器重新下载脚本。
要强制重新加载文件,您可以应用版本控制
<script src="util.js?v=1"></script>
现代框架用于自动加入、缩小和重命名脚本文件。
您可以使用 webpack
等工具来完成
当使用具有 src
属性的 <script>
标签时,应该期望它下载:
<script src="https://unpkg.com/neovis.js@2.0.0-alpha.9/dist/neovis.js"></script>
不过最近下载失败,我也没找到原因。可能可靠的解决方法是,当发生这种情况时,我将其更改为:
<script>
function cdnLoaded() {
console.log('loaded');
}
function cdnError() {
console.log('not loaded');
// do error handling here
}
</script>
<script onload="cdnLoaded()" onerror="cdnError()" async src="https://unpkg.com/neovis.js@2.0.0-alpha.9/dist/neovis.js"></script>
此时,控制台显示已加载但实际上并未加载。但之后当我将其恢复为:
<script src="https://unpkg.com/neovis.js@2.0.0-alpha.9/dist/neovis.js"></script>
然后它再次工作。这在两个浏览器(Edge 和 Firefox)中出现过两次,我还没有机会再次测试。
造成这种奇怪行为的原因是什么?这可能是一种缓存吗?
按文件名浏览器缓存脚本。 可能 adding/removing onload 和 onerror 属性强制浏览器重新下载脚本。
要强制重新加载文件,您可以应用版本控制
<script src="util.js?v=1"></script>
现代框架用于自动加入、缩小和重命名脚本文件。 您可以使用 webpack
等工具来完成