jQuery lazyLoad圖片延遲加載插件的優(yōu)化改造方法分享
更新時(shí)間:2013年08月13日 11:32:55 作者:
jQuery lazyLoad.js插件 是一款基于jquery框架,可以“實(shí)現(xiàn)”圖片延遲加載的插件
jQuery lazyLoad.js插件 是一款基于jquery框架,可以“實(shí)現(xiàn)”圖片延遲加載的插件。請(qǐng)注意,我用了雙引號(hào),因?yàn)閺奈易约簩?shí)際調(diào)試的結(jié)論來說呢,并不會(huì)延遲加載,而是先下載,然后通過改變<img>的src屬性來隱藏原來的圖片。
我們先來看看他的代碼吧!
<script type="text/javascript" src="/static/jssrc/lazyload.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#team_main_side img").lazyload({
placeholder : "/static/theme/xituan/img/img_loading.gif",
effect : "fadeIn"
});
});
</script>
工作原理是先在<img>下創(chuàng)建original屬性,并把src屬性值賦值給original,然后再把src的值修改成你設(shè)置的 placeholder的值。當(dāng)滾動(dòng)條到達(dá)圖片位置時(shí),再把original的屬性賦值給src。這個(gè)時(shí)候向服務(wù)器發(fā)出一個(gè)HTTP請(qǐng)求,確認(rèn)下有沒有修 改,服務(wù)器返回一個(gè)304狀態(tài),等于本來一遍HTTP請(qǐng)求能完成的工作,它用了2遍,非但沒有減少開支,還增加開銷,我徹底無語了。(如下圖,火狐的firebug顯示)
再者,我自己的想法,jquery的代碼是在頁面加載完成后才會(huì)執(zhí)行的,那頁面加載完的時(shí)候,圖片較小的都下載完了,再執(zhí)行jq代碼的話,那種意義就不存在了。
那有問題肯定要解決,把這個(gè)插件的代碼改一改。
好吧,開始了
打開這個(gè)jquery.lazyLoad.js,找到如下圖第一個(gè)紅框的代碼,直接注釋掉;第二個(gè)紅框是需要自己手工添加上去的,然后保存。
<img src="http://jb51.net/upload/201010122047211034.jpg" alt=""/>
修改成
<img original="http://jb51.net/upload/201010122047211034.jpg" src="http://jb51.net/img/img_loading.gif" alt=""/>
最后記得插入js代碼
[code]
<script type="text/javascript" src="/js/jquery.js"></script><!--jquery 包-->
<script type="text/javascript" src="/js/jquery.lazyload.js"></script><!--lazyload 插件-->
<script type="text/javascript"> //初始化代碼
$(document).ready(function(){
$("#team_main_side img").lazyload({
placeholder : "http://jb51.net/img/img_loading.gif",
effect : "fadeIn"
});
});
</script>
這樣所有圖片就都顯示img_loading.gif了,由于都是請(qǐng)求的同一個(gè)圖片,瀏覽器只會(huì)請(qǐng)求一次..對(duì)于減少服務(wù)器http請(qǐng)求來說,我們的目標(biāo)已經(jīng)達(dá)到了.當(dāng)瀏覽器滾動(dòng)到圖片的位置時(shí)候,就會(huì)把圖片加載進(jìn)來。
我們先來看看他的代碼吧!
復(fù)制代碼 代碼如下:
<script type="text/javascript" src="/static/jssrc/lazyload.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#team_main_side img").lazyload({
placeholder : "/static/theme/xituan/img/img_loading.gif",
effect : "fadeIn"
});
});
</script>
工作原理是先在<img>下創(chuàng)建original屬性,并把src屬性值賦值給original,然后再把src的值修改成你設(shè)置的 placeholder的值。當(dāng)滾動(dòng)條到達(dá)圖片位置時(shí),再把original的屬性賦值給src。這個(gè)時(shí)候向服務(wù)器發(fā)出一個(gè)HTTP請(qǐng)求,確認(rèn)下有沒有修 改,服務(wù)器返回一個(gè)304狀態(tài),等于本來一遍HTTP請(qǐng)求能完成的工作,它用了2遍,非但沒有減少開支,還增加開銷,我徹底無語了。(如下圖,火狐的firebug顯示)
再者,我自己的想法,jquery的代碼是在頁面加載完成后才會(huì)執(zhí)行的,那頁面加載完的時(shí)候,圖片較小的都下載完了,再執(zhí)行jq代碼的話,那種意義就不存在了。
那有問題肯定要解決,把這個(gè)插件的代碼改一改。
好吧,開始了
打開這個(gè)jquery.lazyLoad.js,找到如下圖第一個(gè)紅框的代碼,直接注釋掉;第二個(gè)紅框是需要自己手工添加上去的,然后保存。
<img src="http://jb51.net/upload/201010122047211034.jpg" alt=""/>
修改成
<img original="http://jb51.net/upload/201010122047211034.jpg" src="http://jb51.net/img/img_loading.gif" alt=""/>
最后記得插入js代碼
[code]
<script type="text/javascript" src="/js/jquery.js"></script><!--jquery 包-->
<script type="text/javascript" src="/js/jquery.lazyload.js"></script><!--lazyload 插件-->
<script type="text/javascript"> //初始化代碼
$(document).ready(function(){
$("#team_main_side img").lazyload({
placeholder : "http://jb51.net/img/img_loading.gif",
effect : "fadeIn"
});
});
</script>
這樣所有圖片就都顯示img_loading.gif了,由于都是請(qǐng)求的同一個(gè)圖片,瀏覽器只會(huì)請(qǐng)求一次..對(duì)于減少服務(wù)器http請(qǐng)求來說,我們的目標(biāo)已經(jīng)達(dá)到了.當(dāng)瀏覽器滾動(dòng)到圖片的位置時(shí)候,就會(huì)把圖片加載進(jìn)來。
您可能感興趣的文章:
- 詳解vue2路由vue-router配置(懶加載)
- vue2組件實(shí)現(xiàn)懶加載淺析
- vue2筆記 — vue-router路由懶加載的實(shí)現(xiàn)
- 分享一個(gè)精簡的vue.js 圖片lazyload插件實(shí)例
- jquery.lazyload 實(shí)現(xiàn)圖片延遲加載jquery插件
- Jquery.LazyLoad.js修正版下載,實(shí)現(xiàn)圖片延遲加載插件
- jquery插件lazyload.js延遲加載圖片的使用方法
- Jquery圖片延遲加載插件jquery.lazyload.js的使用方法
- JavaScript實(shí)現(xiàn)頁面滾動(dòng)圖片加載(仿lazyload效果)
- Vue自定義圖片懶加載指令v-lazyload詳解
相關(guān)文章
解決用jquery load加載頁面到div時(shí),不執(zhí)行頁面js的問題
這篇文章主要介紹了解決用jquery load加載頁面到div時(shí),不執(zhí)行頁面js的問題。需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-02-02jQuery 獲取和設(shè)置select下拉框的值實(shí)現(xiàn)代碼
jQuery獲取和設(shè)置select下拉框值的實(shí)現(xiàn)代碼。需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-11-11form表單只提交數(shù)據(jù)而不進(jìn)行頁面跳轉(zhuǎn)的解決方案
將數(shù)據(jù)提交到saveReport(form的action指向)頁面,但是頁面又不進(jìn)行跳轉(zhuǎn),即保持當(dāng)前頁面不變呢?利用jquery的ajaxSubmit函數(shù)以及form的onsubmit函數(shù)完成2013-09-09使用jquery插件實(shí)現(xiàn)圖片延遲加載技術(shù)詳細(xì)說明
有時(shí)我們看到一些大型網(wǎng)站,頁面如果有很多圖片的時(shí)候,當(dāng)你滾動(dòng)到相應(yīng)的行時(shí),當(dāng)前行的圖片才即時(shí)加載的,這樣子的話頁面在打開只加可視區(qū)域的圖片,而其它隱藏的圖片則不加載,一定程序上加快了頁面加載的速度,對(duì)于比較長的頁面來說,這個(gè)方案是比較好的。2011-03-03jquery實(shí)現(xiàn)點(diǎn)擊彈出可放大居中及關(guān)閉的對(duì)話框(附demo源碼下載)
這篇文章主要介紹了jquery實(shí)現(xiàn)點(diǎn)擊彈出可放大居中及關(guān)閉的對(duì)話框,具有可拖動(dòng)、放大、居中及關(guān)閉等功能,提供了2種對(duì)話框模式供讀者選擇,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2016-05-05使用jQuery中的wrap()函數(shù)操作HTML元素的教程
wrap(),顧名思義,就是包裹的意思,就是在你所在器外層包裹一層?xùn)|西,接下來我們就詳細(xì)來看使用jQuery中的wrap()函數(shù)操作HTML元素的教程:2016-05-05jquery使用正則表達(dá)式驗(yàn)證email地址的方法
這篇文章主要介紹了jquery使用正則表達(dá)式驗(yàn)證email地址的方法,以實(shí)例形式分析了正則表達(dá)式的使用技巧,需要的朋友可以參考下2015-01-01