【发布时间】:2012-02-20 21:13:21
【问题描述】:
我的应用程序第一次加载一个真正的 HTML 页面(header、content、sidebar 和 footer) .然后每次点击链接都会通过 AJAX 加载并显示(只是加载新的内容)。
一些 ajax 加载 content 内容一个或多个 iframe。一些用户报告说,当他们单击某些页面(单击侧边栏 链接)时,页面加载时间过长。他们报告的这些页面是内部包含 4 或 5 个 iframe 的页面。应用程序发送如下内容:
<div>
Content...
<iframe style="display:none" src="URL1"></iframe>
<iframe style="display:none" src="URL2"></iframe>
<iframe style="display:none" src="URL3"></iframe>
<iframe style="display:none" src="URL4"></iframe>
More content...
</div>
iframe 最初会在用户请求时隐藏和显示(无法根据用户请求加载,因为这会使用户体验更加糟糕)。所以问题是如何让这些 iframe 在页面加载时加载得更快。
我考虑过创建一个 iframe 池,因此我将在第一个页面加载时加载 5 个 iframe(当我加载页眉、侧边栏和页脚时),然后按需重用这些 iframe,因此 AJAX 调用将返回像这样的一段代码:
<div>
Content...
<div class="iframe" style="display:none" src="URL1"></div>
<div class="iframe" style="display:none" src="URL2"></div>
<div class="iframe" style="display:none" src="URL3"></div>
<div class="iframe" style="display:none" src="URL4"></div>
More content...
</div>
success 回调将为每个 div.iframe 分配其对应的 iframe。
是否足以加快页面加载并改善用户体验?是否有任何 jquery 插件或代码已经这样做或类似?还有其他选择吗?
【问题讨论】:
-
我不知道我是否很好地理解了您的问题,但您是否要出于性能目的创建此预加载 iframe 池?如果是这样,那么我认为这无助于提高速度,因为您将不得不加载主页并创建这个额外的 iframe 池。
-
@Victor:我会在加载主页时预加载一些 iframe。之后,我再也不会加载主页(除非用户强制重新加载页面),只是使用 AJAX 加载页面的一部分。关键是这些 AJAX 加载的内容有时包含 iframe。如果是这样,我将(重新)使用池中的 iframe。
-
这些 iframe 指向哪里?这些 URL 的性能如何。创建 iframe 时会有一些“税”,但在大多数情况下,这通常与 iframe 本身的加载相比相形见绌。
-
这些 iframe 指向我自己的网站,而问题在 IE 中最为明显(惊喜!)。我没有任何可靠的性能测量,但是在 localhost 中(通过 AJAX)加载没有帧的 content 几乎无法察觉(100 或 200 毫秒?)并加载 content 5帧大约是2秒。
-
这些 iframe 有什么用?为什么要加载这么多?