懶加載和預(yù)加載

1靶累、懶加載

1.什么是懶加載腺毫?

懶加載也就是延遲加載。
當(dāng)訪問(wèn)一個(gè)頁(yè)面的時(shí)候挣柬,先把img元素或是其他元素的背景圖片路徑替換成一張大小為1*1px圖片的路徑(這樣就只需請(qǐng)求一次潮酒,俗稱(chēng)占位圖),只有當(dāng)圖片出現(xiàn)在瀏覽器的可視區(qū)域內(nèi)時(shí)邪蛔,才設(shè)置圖片正真的路徑急黎,讓圖片顯示出來(lái)。這就是圖片懶加載侧到。

2.為什么要使用懶加載叁熔?

很多頁(yè)面,內(nèi)容很豐富床牧,頁(yè)面很長(zhǎng)荣回,圖片較多。比如說(shuō)各種商城頁(yè)面戈咳。這些頁(yè)面圖片數(shù)量多心软,而且比較大,少說(shuō)百來(lái)K著蛙,多則上兆删铃。要是頁(yè)面載入就一次性加載完畢。估計(jì)大家都會(huì)等到黃花變成黃花菜了踏堡。

3.懶加載的原理是什么猎唁?

頁(yè)面中的img元素,如果沒(méi)有src屬性顷蟆,瀏覽器就不會(huì)發(fā)出請(qǐng)求去下載圖片诫隅,只有通過(guò)javascript設(shè)置了圖片路徑,瀏覽器才會(huì)發(fā)送請(qǐng)求帐偎。
懶加載的原理就是先在頁(yè)面中把所有的圖片統(tǒng)一使用一張占位圖進(jìn)行占位逐纬,把正真的路徑存在元素的“data-url”(這個(gè)名字起個(gè)自己認(rèn)識(shí)好記的就行)屬性里,要用的時(shí)候就取出來(lái)削樊,再設(shè)置豁生;

4.懶加載的實(shí)現(xiàn)步驟?

1)首先漫贞,不要將圖片地址放到src屬性中甸箱,而是放到其它屬性(data-original)中。
2)頁(yè)面加載完成后迅脐,根據(jù)scrollTop判斷圖片是否在用戶的視野內(nèi)芍殖,如果在,則將data-original屬性中的值取出存放到src屬性中仪际。
3)在滾動(dòng)事件中重復(fù)判斷圖片是否進(jìn)入視野围小,如果進(jìn)入昵骤,則將data-original屬性中的值取出存放到src屬性中。

5.懶加載的優(yōu)點(diǎn)是什么肯适?

頁(yè)面加載速度快变秦、可以減輕服務(wù)器的壓力、節(jié)約了流量,用戶體驗(yàn)好

2框舔、預(yù)加載

1.什么是預(yù)加載蹦玫?

提前加載圖片,當(dāng)用戶需要查看時(shí)可直接從本地緩存中渲染

2.為什么要使用預(yù)加載刘绣?

圖片預(yù)先加載到瀏覽器中樱溉,訪問(wèn)者便可順利地在你的網(wǎng)站上沖浪,并享受到極快的加載速度纬凤。這對(duì)圖片畫(huà)廊及圖片占據(jù)很大比例的網(wǎng)站來(lái)說(shuō)十分有利福贞,它保證了圖片快速、無(wú)縫地發(fā)布停士,也可幫助用戶在瀏覽你網(wǎng)站內(nèi)容時(shí)獲得更好的用戶體驗(yàn)挖帘。

3.實(shí)現(xiàn)預(yù)加載的方法有哪些?

方法一:用CSS和JavaScript實(shí)現(xiàn)預(yù)加載
方法二:僅使用JavaScript實(shí)現(xiàn)預(yù)加載
方法三:使用Ajax實(shí)現(xiàn)預(yù)加載

詳見(jiàn):http://web.jobbole.com/86785/

3恋技、懶加載和預(yù)加載的對(duì)比

1)概念:
懶加載也叫延遲加載:JS圖片延遲加載,延遲加載圖片或符合某些條件時(shí)才加載某些圖片拇舀。
預(yù)加載:提前加載圖片,當(dāng)用戶需要查看時(shí)可直接從本地緩存中渲染蜻底。

2)區(qū)別:
兩種技術(shù)的本質(zhì):兩者的行為是相反的骄崩,一個(gè)是提前加載,一個(gè)是遲緩甚至不加載薄辅。懶加載對(duì)服務(wù)器前端有一定的緩解壓力作用要拂,預(yù)加載則會(huì)增加服務(wù)器前端壓力。

3)懶加載的意義及實(shí)現(xiàn)方式有:
意義:
懶加載的主要目的是作為服務(wù)器前端的優(yōu)化长搀,減少請(qǐng)求數(shù)或延遲請(qǐng)求數(shù)宇弛。
實(shí)現(xiàn)方式:
1.第一種是純粹的延遲加載鸡典,使用setTimeOut或setInterval進(jìn)行加載延遲.
2.第二種是條件加載源请,符合某些條件,或觸發(fā)了某些事件才開(kāi)始異步下載彻况。
3.第三種是可視區(qū)加載谁尸,即僅加載用戶可以看到的區(qū)域,這個(gè)主要由監(jiān)控滾動(dòng)條來(lái)實(shí)現(xiàn)纽甘,一般會(huì)在距用戶看到某圖片前一定距離遍開(kāi)始加載良蛮,這樣能保證用戶拉下時(shí)正好能看到圖片。

4)預(yù)加載的意義及實(shí)現(xiàn)方式有:
意義:
預(yù)加載可以說(shuō)是犧牲服務(wù)器前端性能悍赢,換取更好的用戶體驗(yàn)决瞳,這樣可以使用戶的操作得到最快的反映货徙。
實(shí)現(xiàn)方式:
實(shí)現(xiàn)預(yù)載的方法非常多,比如:用CSS和JavaScript實(shí)現(xiàn)預(yù)加載皮胡;僅使用JavaScript實(shí)現(xiàn)預(yù)加載痴颊;使用Ajax實(shí)現(xiàn)預(yù)加載。
常用的是new Image();設(shè)置其src來(lái)實(shí)現(xiàn)預(yù)載屡贺,再使用onload方法回調(diào)預(yù)載完成事件蠢棱。只要瀏覽器把圖片下載到本地,同樣的src就會(huì)使用緩存甩栈,這是最基本也是最實(shí)用的預(yù)載方法泻仙。當(dāng)Image下載完圖片頭后,會(huì)得到寬和高量没,因此可以在預(yù)載前得到圖片的大小(方法是用記時(shí)器輪循寬高變化)玉转。

4、補(bǔ)充知識(shí)

  1. 屏幕可視窗口大小
        **原生方法**:
            window.innerHeight 標(biāo)準(zhǔn)瀏覽器及IE9+ ||
            document.documentElement.clientHeight 標(biāo)準(zhǔn)瀏覽器及低版本IE標(biāo)準(zhǔn)模式 ||
            document.body.clientHeight  低版本混雜模式
        **jQuery方法**: 
            $(window).height();
  1. 瀏覽器窗口頂部與文檔頂部之間的距離殴蹄,也就是滾動(dòng)條滾動(dòng)的距離:
        **原生方法**:
              window.pagYoffset 標(biāo)準(zhǔn)瀏覽器及IE9+ ||
              document.documentElement.scrollTop 兼容ie低版本的標(biāo)準(zhǔn)模式 ||
              document.body.scrollTop 兼容混雜模式冤吨;
        **jQuery方法**:
              $(document).scrollTop();
  1. 獲取元素的尺寸
$(o).width() = o.style.width;
$(o).innerWidth() = o.style.width+o.style.padding;
$(o).outerWidth() = o.offsetWidth = o.style.width+o.style.padding+o.style.border;
$(o).outerWidth(true) = o.style.width+o.style.padding+o.style.border+o.style.margin饶套;
**注意**
要使用原生的style.xxx方法獲取屬性漩蟆,這個(gè)元素必須已經(jīng)有內(nèi)嵌的樣式,如`<div style="...."></div>`妓蛮;

如果原先是通過(guò)外部或內(nèi)部樣式表定義css樣式怠李,必須使用`o.currentStyle[xxx] || document.defaultView.getComputedStyle(0)[xxx]`來(lái)獲取樣式值。
  1. 獲取元素的位置信息
    jQuery
    $(o).offset().top元素距離文檔頂?shù)木嚯x
    $(o).offset().left元素距離文檔左邊緣的距離蛤克。
    原生getoffsetTop();
    順便提一下返回元素相對(duì)于第一個(gè)以定位的父元素的偏移距離捺癞,注意與上面偏移距的區(qū)別;
    jQuery:position()返回一個(gè)對(duì)象
    $(o).position().left = o.style.left;
    $(o).position().top = o.style.top构挤;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末髓介,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子筋现,更是在濱河造成了極大的恐慌唐础,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矾飞,死亡現(xiàn)場(chǎng)離奇詭異一膨,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)洒沦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)豹绪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人申眼,你說(shuō)我怎么就攤上這事瞒津〔跻拢” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵巷蚪,是天一觀的道長(zhǎng)买乃。 經(jīng)常有香客問(wèn)我,道長(zhǎng)钓辆,這世上最難降的妖魔是什么剪验? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮前联,結(jié)果婚禮上功戚,老公的妹妹穿的比我還像新娘。我一直安慰自己似嗤,他們只是感情好啸臀,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著烁落,像睡著了一般乘粒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伤塌,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天灯萍,我揣著相機(jī)與錄音,去河邊找鬼每聪。 笑死旦棉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的药薯。 我是一名探鬼主播绑洛,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼童本!你這毒婦竟也來(lái)了真屯?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤穷娱,失蹤者是張志新(化名)和其女友劉穎绑蔫,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鄙煤,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晾匠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了梯刚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡薪寓,死狀恐怖亡资,靈堂內(nèi)的尸體忽然破棺而出澜共,到底是詐尸還是另有隱情,我是刑警寧澤锥腻,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布嗦董,位于F島的核電站,受9級(jí)特大地震影響瘦黑,放射性物質(zhì)發(fā)生泄漏京革。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一幸斥、第九天 我趴在偏房一處隱蔽的房頂上張望匹摇。 院中可真熱鬧,春花似錦甲葬、人聲如沸廊勃。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)坡垫。三九已至,卻和暖如春画侣,著一層夾襖步出監(jiān)牢的瞬間冰悠,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工配乱, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留屿脐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓宪卿,卻偏偏與公主長(zhǎng)得像的诵,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子佑钾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 懶加載和預(yù)加載 1. 懶加載 1. 什么是懶加載西疤? 懶加載也就是延遲加載 當(dāng)訪問(wèn)一個(gè)頁(yè)面的時(shí)候,先把img元素或是...
    琦琦出去玩了閱讀 749評(píng)論 0 8
  • 1.懶加載原理 原理:先將img標(biāo)簽中的src鏈接設(shè)為同一張圖片(空白圖片)休溶,將其真正的圖片地址存儲(chǔ)再img標(biāo)簽的...
    喵媽閱讀 3,334評(píng)論 0 3
  • 自動(dòng)加載 自動(dòng)加載就是符合某些條件時(shí)才加載某些圖片兽掰。 現(xiàn)在好多的網(wǎng)站都用到了自動(dòng)加載圖片技術(shù)芭碍,比如淘寶,剛打開(kāi)淘寶...
    shadow123閱讀 899評(píng)論 0 0
  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案孽尽? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,728評(píng)論 1 92
  • 記得那是上小學(xué)一窖壕、二年級(jí)的時(shí)候,大約七、八歲吧瞻讽,我得了一次瘧疾鸳吸。人時(shí)冷時(shí)熱,渾身無(wú)力速勇,走路都成問(wèn)題晌砾。這次患病,是我...
    久歌閱讀 759評(píng)論 0 0