首先澄清一下,这个问题不是关于onload页面渲染性能的。
我正在开发一个使用 SVG 和大量 JavaScript 的 Web 应用程序(HTML5、SVG、CSS3 和 Js)。它已经到了拖动速度明显缓慢的地步,我们必须返回并重新编写和审查所有现有功能以优化应用程序。
我的一位队友认为,如果我在 iframe 中加载某个功能,Web 应用程序不会产生太大影响,因为浏览器会在单独的线程中处理它,因此现有的 Web 应用程序选项卡不必承受iframe 内容渲染和更新的首当其冲。另外,如果需要,iframe 中的内容可以轻松呈现在 div 中。
我的问题是,浏览器(当然是最新的和最好的)在处理 iframe 时是否为了渲染和性能而分配单独的资源?应用程序加载不是这个问题的问题。
最佳答案
我不想在这里跳上旧话题,但接受的答案具有误导性。你的 friend 是对的:iframe 被有效地沙箱化,因此它们的渲染过程在现代浏览器中是独立的、异步的和多线程的。因此,虽然将应用程序的各个部分分割成 iframe 不会加快任何 JavaScript 的执行速度,但它很可能会提高渲染性能,因为它分割并简化了每个页面组件的 DOM。
作为引用,请查看the story about Fastbook ,Sencha 工程师花了几周时间将其作为晚间项目整理出来,只是为了表明 Facebook 网络应用程序可以得到极大的优化。除此之外,他们还使用 iframe 进行沙箱渲染。
顺便说一句,这并不是浏览器真正应该工作的方式。 (例如,Chrome 团队鼓励人们在需要 iframe 来提高性能的情况下提交错误。)不过,在可预见的 future ,这对于复杂应用程序来说是最佳实践,尤其是那些具有多个“面板”和高回流率的应用程序。
关于javascript - iFrame - 在 Web 应用程序中实现 Iframe 的成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11329487/