懶加載和預加載是什么

1.懶加載原理

原理:先將img標簽中的src鏈接設為同一張圖片(空白圖片),將其真正的圖片地址存儲再img標簽的自定義屬性中

(比如data-src)。當js監(jiān)聽到該圖片元素進入可視窗口時,即將自定義屬性中的地址存儲到src屬性中,達到

懶加載的效果。

這樣做能防止頁面一次性向服務器響應大量請求導致服務器響應慢,頁面卡頓或崩潰等問題

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

很多頁面,內(nèi)容很豐富,頁面很長,圖片較多。比如說各種商城頁面。這些頁面圖片數(shù)量多,而且比較大,少說百來K,多則上兆。要是頁面載入就一次性加載完畢。估計大家都會等到黃花變成黃花菜了。

這樣做能防止頁面一次性向服務器響應大量請求導致服務器響應慢,頁面卡頓或崩潰等問題。-->

既然懶加載的原理是基于判斷元素是否出現(xiàn)在窗口可視范圍內(nèi),首先我們寫一個函數(shù)判斷元素是否出現(xiàn)在可視范圍內(nèi):-

function isVisible($node){

var winH = $(window).height(),

scrollTop = $(window).scrollTop(),

offSetTop = $(window).offSet().top;

if (offSetTop < winH + scrollTop) {

return true;

} else {

return false;

}

再添加上瀏覽器的事件監(jiān)聽函數(shù),讓瀏覽器每次滾動就檢查元素是否出現(xiàn)在窗口可視范圍內(nèi):

$(window).on("scroll", function{

if (isVisible($node)){

console.log(true);

}

})

我們已經(jīng)很接近了,現(xiàn)在我們要做的是,讓元素只在第一次被檢查到時打印true,之后就不再打印了

var hasShowed = false;

$(window).on("sroll",function{

if (hasShowed) {

return;

} else {

if (isVisible($node)) {

hasShowed = !hasShowed;

console.log(true);

}

}

懶加載的優(yōu)點是什么?

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

2、預加載

1.什么是預加載?

提前加載圖片,當用戶需要查看時可直接從本地緩存中渲染

2.為什么要使用預加載?

圖片預先加載到瀏覽器中,訪問者便可順利地在你的網(wǎng)站上沖浪,并享受到極快的加載速度。這對圖片畫廊及圖片占據(jù)很大比例的網(wǎng)站來說十分有利,它保證了圖片快速、無縫地發(fā)布,也可幫助用戶在瀏覽你網(wǎng)站內(nèi)容時獲得更好的用戶體驗。

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

方法一:用CSS和JavaScript實現(xiàn)預加載

方法二:僅使用JavaScript實現(xiàn)預加載

方法三:使用Ajax實現(xiàn)預加載

懶加載和預加載的對比

1)概念:

懶加載也叫延遲加載:JS圖片延遲加載,延遲加載圖片或符合某些條件時才加載某些圖片。

預加載:提前加載圖片,當用戶需要查看時可直接從本地緩存中渲染。

2)區(qū)別:

兩種技術的本質(zhì):兩者的行為是相反的,一個是提前加載,一個是遲緩甚至不加載。懶加載對服務器前端有一定的緩解壓力作用,預加載則會增加服務器前端壓力。

3)懶加載的意義及實現(xiàn)方式有:

意義:

懶加載的主要目的是作為服務器前端的優(yōu)化,減少請求數(shù)或延遲請求數(shù)。

實現(xiàn)方式:

1.第一種是純粹的延遲加載,使用setTimeOut或setInterval進行加載延遲.

2.第二種是條件加載,符合某些條件,或觸發(fā)了某些事件才開始異步下載。

3.第三種是可視區(qū)加載,即僅加載用戶可以看到的區(qū)域,這個主要由監(jiān)控滾動條來實現(xiàn),一般會在距用戶看到某圖片前一定距離遍開始加載,這樣能保證用戶拉下時正好能看到圖片。

4)預加載的意義及實現(xiàn)方式有:

意義:

預加載可以說是犧牲服務器前端性能,換取更好的用戶體驗,這樣可以使用戶的操作得到最快的反映。

實現(xiàn)方式:

實現(xiàn)預載的方法非常多,比如:用CSS和JavaScript實現(xiàn)預加載;僅使用JavaScript實現(xiàn)預加載;使用Ajax實現(xiàn)預加載。

常用的是new Image();設置其src來實現(xiàn)預載,再使用onload方法回調(diào)預載完成事件。只要瀏覽器把圖片下載到本地,同樣的src就會使用緩存,這是最基本也是最實用的預載方法。當Image下載完圖片頭后,會得到寬和高,因此可以在預載前得到圖片的大小(方法是用記時器輪循寬高變化)。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

  • 1、懶加載 1.什么是懶加載? 懶加載也就是延遲加載。當訪問一個頁面的時候,先把img元素或是其他元素的背景圖片路...
    xiaolizhenzhen閱讀 70,506評論 18 160
  • 1.如何判斷一個元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)。寫一個函數(shù) isVisible...
    GarenWang閱讀 476評論 0 2
  • 1.如何判斷一個元素是否出現(xiàn)在窗口可視范圍(瀏覽器的上邊緣和下邊緣之間,肉眼可視)。寫一個函數(shù) isVisible...
    Rising_suns閱讀 314評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,287評論 25 708
  • 今天總結,看了一下簡書,嚇我一跳,居然寫了一萬多字,說實話,長這么大從來沒用這么多文字表達過心聲,雖然最心底的還有...
    屰月閱讀 216評論 0 1