盡量減少Iframe框架在你站點上的使用
作者: 鄭曉 分類: 建站經(jīng)驗 發(fā)布于: 2012-06-28 13:00 瀏覽:5,526 沒有評論
想說使用框架會影響搜索引擎收錄的童鞋們,你們想的有點兒遠了,這里只考慮對程序?qū)W(wǎng)站本身的影響。
iframes提供了一個簡單的方式把一個網(wǎng)站的內(nèi)容嵌入到另一個網(wǎng)站中。但我們需要慎重的使用iframe。iframe的創(chuàng)建比其它包括scripts和css的 DOM 元素的創(chuàng)建慢了 1-2 個數(shù)量級。
使用iframe的頁面一般不會包含太多 iframe,所以創(chuàng)建 DOM 節(jié)點所花費的時間不會占很大的比重。但帶來一些其它的問題:window.onload事件以及連接池(connection pool)。
Iframes 阻塞頁面加載
及時觸發(fā)window.onload事件是非常重要的。onload事件觸發(fā)使瀏覽器的 “忙” 指示器停止,告訴用戶當前網(wǎng)頁已經(jīng)加載完畢。當window.onload事件加載延遲后,它給用戶的感覺就是這個網(wǎng)頁非常慢。
window.onload事件需要在所有 iframe 加載完畢后(包含里面的元素)才會觸發(fā)。在 Safari 和 Chrome 里,通過 JavaScript 動態(tài)設置 iframe 的 SRC 可以避免這種阻塞情況。
唯一的連接池
瀏覽器只能開少量的連接到web服務器。比較老的瀏覽器,包含 Internet Explorer 6 & 7 和 Firefox 2,只能對一個域名(hostname)同時打開兩個連接。這個數(shù)量的限制在新版本的瀏覽器中有所提高。Safari 3+ 和 Opera 9+ 可同時對一個域名打開 4 個連接,Chrome 1+, IE 8 以及 Firefox 3 可以同時打開 6 個。你可以通過這篇文章查看具體的數(shù)據(jù)表:Roundup on Parallel Connections.
有人可能希望 iframe 會有自己獨立的連接池,但不是這樣的。絕大部分瀏覽器,主頁面和其中的 iframe 是共享這些連接的。這意味著 iframe 在加載資源時可能用光了所有的可用連接,從而阻塞了主頁面資源的加載。如果 iframe 中的內(nèi)容比主頁面的內(nèi)容更重要,這當然是很好的。但通常情況下,iframe 里的內(nèi)容是沒有主頁面的內(nèi)容重要的。這時 iframe 中用光了可用的連接就是不值得的了。一種解決辦法是,在主頁面上重要的元素加載完畢后,再動態(tài)設置 iframe 的 SRC。
美國前 10 大網(wǎng)站都使用了 iframe。大部分情況下,他們用它來加載廣告。這是可以理解的,也是一種符合邏輯的解決方案,用一種簡單的辦法來加載廣告服務。
so,雖然框架也有它自己的優(yōu)點,但能不用的話還是不去使用的好,盡量使用其它方式代替。
本文采用知識共享署名-非商業(yè)性使用 3.0 中國大陸許可協(xié)議進行許可,轉(zhuǎn)載時請注明出處及相應鏈接。
本文永久鏈接: http://yjfs.org.cn/minimize-the-use-of-the-the-iframe-framework-on-your-site.html