溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

為什么要少用Iframe

發(fā)布時(shí)間:2022-01-15 09:44:03 來源:億速云 閱讀:101 作者:柒染 欄目:移動(dòng)開發(fā)

今天給大家介紹一下為什么要少用Iframe。文章的內(nèi)容小編覺得不錯(cuò),現(xiàn)在給大家分享一下,覺得有需要的朋友可以了解一下,希望對(duì)大家有所幫助,下面跟著小編的思路一起來閱讀吧。

下圖顯示創(chuàng)建 100 個(gè)不同的元素中iframe到底有多耗費(fèi)時(shí)間。
為什么要少用Iframe

創(chuàng)建100個(gè) elements 的耗時(shí)

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

 Iframes 阻塞頁面加載

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

window 的 onload 事件需要在所有 iframe 加載完畢后(包含里面的元素)才會(huì)觸發(fā)。在 Safari 和 Chrome 里,通過 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è)。你可以通過這篇文章查看具體的數(shù)據(jù)表:Roundup on Parallel Connections.

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

美國前 10 大網(wǎng)站都使用了 iframe。大部分情況下,他們用它來加載廣告。這是可以理解的,也是一種符合邏輯的解決方案,用一種簡(jiǎn)單的辦法來加載廣告服務(wù)。但請(qǐng)記住,iframe 會(huì)給你的頁面性能帶來沖擊。只要可能,不要使用 iframe。當(dāng)確實(shí)需要時(shí),謹(jǐn)慎的使用他們。 

以上就是為什么要少用Iframe的全部?jī)?nèi)容了,更多與為什么要少用Iframe相關(guān)的內(nèi)容可以搜索億速云之前的文章或者瀏覽下面的文章進(jìn)行學(xué)習(xí)哈!相信小編會(huì)給大家增添更多知識(shí),希望大家能夠支持一下億速云!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI