【发布时间】:2010-11-08 16:32:50
【问题描述】:
我有更长一点的问题要问你 - 但希望答案会很简单:)
假设我有一个非常简单的页面,带有链接和 iframe(仅用于简单示例)。
<body>
<a href="test.html" target="mframe">open link></a>
<iframe name="mframe" [params] />
</body>
因此,当您单击链接时,它将在框架中加载 test.html。
现在我将使用 div 和 ajax 调用更改 iframe。
<body>
<a href="doAjaxCall('test.html')">open link</a>
<div id="main-content"></div>
</body>
doAjaxCall 将简单地使用 GET ajax requset 来获取整个响应,解析它(使用 JavaScript)并抓取
标记中的内容并将其放入 main-content.innerHTML。test.html 包含很多 html,还有 css 样式(但与父页面上的样式相同 - 所以我在使用 ajax 解决方案时不需要它们)。
问题:
为什么这个 ajax 解决方案这么快?我仍在下载相同数量的数据(下载整个 test.html)。
为什么 iframe 解决方案这么慢?是因为浏览器必须再次解析所有可能的样式吗?还是 iframe 的其他开销?
【问题讨论】:
-
您是否在多个浏览器中看到相同的行为?
-
其实我的例子很简单。 :) 实际上,我正在一个更大的站点上尝试此解决方案,我们现在正在使用 iframe。我已经删除了它们并用那个 ajax 解决方案替换它们。正如我所写,我只是用 ajax 调用替换了链接,但流量仍然相同。是的,在每个浏览器(IE/FF/CH/SAF)中它肯定更快。我现在看到的唯一原因是浏览器不需要一次又一次地加载样式,只需替换“main-content”div 的 innerHTML。谢谢!帕沃尔。
-
如果您的样式表位于通过链接标签调用的专用 css 文件中,那么浏览器应该利用缓存并且只加载一次。顺便说一句,我很好奇你的 iframe 有多慢 - 我们说的是毫秒,对吧?
标签: javascript html css ajax iframe