當(dāng)前位置: 博客首頁(yè) >> 建站經(jīng)驗(yàn) >> 閱讀正文

盡量減少Iframe框架在你站點(diǎn)上的使用

作者: 鄭曉 分類: 建站經(jīng)驗(yàn) 發(fā)布于: 2012-06-28 13:00 瀏覽:5,555 沒(méi)有評(píng)論


  想說(shuō)使用框架會(huì)影響搜索引擎收錄的童鞋們,你們想的有點(diǎn)兒遠(yuǎn)了,這里只考慮對(duì)程序?qū)W(wǎng)站本身的影響。

  iframes提供了一個(gè)簡(jiǎn)單的方式把一個(gè)網(wǎng)站的內(nèi)容嵌入到另一個(gè)網(wǎng)站中。但我們需要慎重的使用iframe。iframe的創(chuàng)建比其它包括scripts和css的 DOM 元素的創(chuàng)建慢了 1-2 個(gè)數(shù)量級(jí)。

  使用iframe的頁(yè)面一般不會(huì)包含太多 iframe,所以創(chuàng)建 DOM 節(jié)點(diǎn)所花費(fèi)的時(shí)間不會(huì)占很大的比重。但帶來(lái)一些其它的問(wèn)題:window.onload事件以及連接池(connection pool)。

  Iframes 阻塞頁(yè)面加載

  及時(shí)觸發(fā)window.onload事件是非常重要的。onload事件觸發(fā)使瀏覽器的 “忙” 指示器停止,告訴用戶當(dāng)前網(wǎng)頁(yè)已經(jīng)加載完畢。當(dāng)window.onload事件加載延遲后,它給用戶的感覺(jué)就是這個(gè)網(wǎng)頁(yè)非常慢。

  window.onload事件需要在所有 iframe 加載完畢后(包含里面的元素)才會(huì)觸發(fā)。在 Safari 和 Chrome 里,通過(guò) JavaScript 動(dòng)態(tài)設(shè)置 iframe 的 SRC 可以避免這種阻塞情況。

  唯一的連接池

  瀏覽器只能開少量的連接到web服務(wù)器。比較老的瀏覽器,包含 Internet Explorer 6 & 7 和 Firefox 2,只能對(duì)一個(gè)域名(hostname)同時(shí)打開兩個(gè)連接。這個(gè)數(shù)量的限制在新版本的瀏覽器中有所提高。Safari 3+ 和 Opera 9+ 可同時(shí)對(duì)一個(gè)域名打開 4 個(gè)連接,Chrome 1+, IE 8 以及 Firefox 3 可以同時(shí)打開 6 個(gè)。你可以通過(guò)這篇文章查看具體的數(shù)據(jù)表:Roundup on Parallel Connections.

  有人可能希望 iframe 會(huì)有自己獨(dú)立的連接池,但不是這樣的。絕大部分瀏覽器,主頁(yè)面和其中的 iframe 是共享這些連接的。這意味著 iframe 在加載資源時(shí)可能用光了所有的可用連接,從而阻塞了主頁(yè)面資源的加載。如果 iframe 中的內(nèi)容比主頁(yè)面的內(nèi)容更重要,這當(dāng)然是很好的。但通常情況下,iframe 里的內(nèi)容是沒(méi)有主頁(yè)面的內(nèi)容重要的。這時(shí) iframe 中用光了可用的連接就是不值得的了。一種解決辦法是,在主頁(yè)面上重要的元素加載完畢后,再動(dòng)態(tài)設(shè)置 iframe 的 SRC。

  美國(guó)前 10 大網(wǎng)站都使用了 iframe。大部分情況下,他們用它來(lái)加載廣告。這是可以理解的,也是一種符合邏輯的解決方案,用一種簡(jiǎn)單的辦法來(lái)加載廣告服務(wù)。
  so,雖然框架也有它自己的優(yōu)點(diǎn),但能不用的話還是不去使用的好,盡量使用其它方式代替。

? ? ? ?

本文采用知識(shí)共享署名-非商業(yè)性使用 3.0 中國(guó)大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時(shí)請(qǐng)注明出處及相應(yīng)鏈接。

本文永久鏈接: http://m.yjfs.org.cn/minimize-the-use-of-the-the-iframe-framework-on-your-site.html

發(fā)表評(píng)論

change vcode