Javascript 预加载 iframe 而不会阻塞浏览器

标签 javascript jquery iframe preload

我有几个要加载的 iframe,后面有一个巨大的 3D 模型。

当我在我的网站上显示我的 iframe 时,我的浏览器会在加载此 iframe 时阻塞(可能需要 20 秒......)

我正在寻找一种在不阻塞浏览器的情况下预加载这些 iframe 的方法。我尝试了不显示、ajax 或动态创建 iframe 但没有效果。

你有什么想法吗?谢谢!

最佳答案

据我所知,在不阻塞浏览器的情况下,没有干净的支持/标准预加载 iFrame 的方法。

但是,您可以通过多种方式最小化此“ block ”。为了让您了解一些情况,浏览器会在此处阻止:

  • 加载脚本
  • 加载大型外部资源(脚本/图像/css/其他媒体)
  • 大量的 DOM 操作
  • 密集计算

要减轻脚本加载,您可以使用 Loading Scripts Without Blocking 等技术.如果您可以正确设置浏览器缓存,那么 iFrame 中的页面将不会花时间下载脚本,因为它已经在缓存中。

对于其他资源,如果适用,您可以使用相同的预加载技术来填充浏览器缓存。

重度 DOM 操作 - 您可以使用概述的技术 herehere这将帮助您最大限度地减少重绘和回流。

如果可能,您可以调整 ReactJs 的功能,通过使用 virtual DOM 来最小化浏览器 DOM 操作。

您提到了 3D 模型计算,它们往往是计算密集型的。你应该看看使用 Web Workers这会将阻塞方面从主浏览器线程卸载到后台线程中。

所有这些技术的结合将最大限度地减少阻塞。如果您可以隔离并确定最大瓶颈的部分,则不必实现所有技术。

希望这对您有所帮助!

关于Javascript 预加载 iframe 而不会阻塞浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31320816/

相关文章:

javascript - 使用 Javascript Fetch API 读取文件而不知道文件名

javascript - 在 iframe 中使用 document.write 作为脚本时 Chrome 中的奇怪行为

jquery - 如何在移动 Safari 中短暂禁用滚动?

java - GWT 问题 : Invoking Linker Cross-Site-Iframe Ignoring the following script tags in the gwt. xml 文件

javascript - 如何从 iframe 获取父文档中的 css 元素

javascript - HTML 复选框的文本

javascript - Google Places API 库不返回 photo_reference 属性

javascript - 暂停时防止 HTML5 音频缓冲整个 mp3

javascript - Summernote 不会编辑其内容

javascript - jQuery表单提交,防止第一次提交后多次发送