淺析js預(yù)加載/延遲加載
Pre loader 預(yù)加載一般有兩種常用方式:xhr和動(dòng)態(tài)插入節(jié)點(diǎn)的方式。動(dòng)態(tài)插入節(jié)點(diǎn)是最為簡(jiǎn)單也最為廣泛的一種異步加載方式,然后使用動(dòng)態(tài)插入節(jié)點(diǎn)方法加載的文件都會(huì) 在加載后立即執(zhí)行,javascript的執(zhí)行一方面會(huì)占用瀏覽器js執(zhí)行進(jìn)程,另一方面也可能改變頁面結(jié)構(gòu),而css 的執(zhí)行更有可能讓整個(gè)頁面變化。xhr方式雖然不會(huì)執(zhí)行腳本,但是由于同域的限制
Lazy loader方式在一些圖片非常多的網(wǎng)站中非常有用,在瀏覽器可視區(qū)域外的圖片不會(huì)被載入,直到用戶將頁面滾動(dòng)到它們所在的位置才加載,這樣對(duì)于含有很多 圖片的比較長(zhǎng)的網(wǎng)頁來說,可以加載的更快,并且還能節(jié)省服務(wù)器帶寬。jQuery插件中也有插件來實(shí)現(xiàn)該功能。
在騰訊的QQ空間和微博中就采用這樣技術(shù)實(shí)現(xiàn),在大訪問量的網(wǎng)站,這樣就相對(duì)可以減少服務(wù)器的壓力,在用戶訪問到所見區(qū)域和下面內(nèi)容時(shí)候才去請(qǐng)求。而不是傳統(tǒng)的一次把整個(gè)頁面下載過來,在下載過程中存在著用戶等待內(nèi)容呈現(xiàn)。
IE中使用new Image().src 去預(yù)加載文件。
其他瀏覽器使用動(dòng)態(tài)插入document.createElement('object')標(biāo)簽來完成加載。
說明:
1. new Image().src 之所以不能在ff中使用是因?yàn)閒f對(duì)圖片實(shí)現(xiàn)了一套單獨(dú)的緩存。 同時(shí)safari和chrome看起來也沒有被緩存。
2. 動(dòng)態(tài)插入object 標(biāo)簽需要插入到非head部分,以觸發(fā)加載。
3. ie7 ie8 也可以通過一些代碼使用動(dòng)態(tài)object加載文件。
相關(guān)文章
JavaScript?setTimeout和setInterval的用法與區(qū)別詳解
Javascript的setTimeOut和setInterval函數(shù)應(yīng)用非常廣泛,它們都用來處理延時(shí)和定時(shí)任務(wù),下面這篇文章主要給大家介紹了關(guān)于JavaScript?setTimeout和setInterval的用法與區(qū)別,需要的朋友可以參考下2022-04-04BootStrap實(shí)現(xiàn)帶有增刪改查功能的表格(DEMO詳解)
這篇文章主要介紹了BootStrap實(shí)現(xiàn)帶有增刪改查功能的表格,表格封裝了3個(gè)版本,接下來通過本文給大家展示下樣式及代碼,對(duì)bootstrap增刪改查相關(guān)知識(shí)感興趣的朋友一起通過本文學(xué)習(xí)吧2016-10-10普通web整合quartz跑定時(shí)任務(wù)的示例
這篇文章主要介紹了普通web整合quartz跑定時(shí)任務(wù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03uni-app微信小程序登錄授權(quán)的實(shí)現(xiàn)
這篇文章主要介紹了uni-app微信小程序登錄授權(quán)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05JS限制Textarea文本域字符個(gè)數(shù)的具體實(shí)現(xiàn)
這篇文章介紹了JS限制Textarea文本域字符個(gè)數(shù)的具體實(shí)現(xiàn),有需要的朋友可以參考一下2013-08-08js+html5實(shí)現(xiàn)復(fù)制文字按鈕
這篇文章主要為大家詳細(xì)介紹了js+html5實(shí)現(xiàn)復(fù)制文字按鈕,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07