預(yù)加載那些事兒

博客原文:http://longtean.top/2017/10/15/%E5%9B%BE%E7%89%87%E9%A2%84%E5%8A%A0%E8%BD%BD/

在慕課上學(xué)習(xí)了圖片的預(yù)加載外傅,寫一篇博客總結(jié)一下好乐,方便以后復(fù)習(xí),并與后面的懶加載作對比揣非。

什么是圖片預(yù)加載

  預(yù)知用戶將發(fā)生的行為,提前加載用戶所需要的圖片持钉。換句話說盹靴,就是在網(wǎng)頁全部加載之前,提前加載圖片二驰。當(dāng)用戶需要查看時可直接從本地緩存中渲染扔罪,以提供給用戶更好的體驗(yàn),減少等待的時間桶雀。否則矿酵,如果一個頁面的內(nèi)容過于龐大唬复,沒有使用預(yù)加載技術(shù)的頁面就會長時間的展現(xiàn)為一片空白∪梗可分為無序加載和有序加載

舉個栗子:

  • 網(wǎng)站的loading頁
    • 在顯示加載中的緩沖標(biāo)志時敞咧,正在瘋狂加載需要的圖片,而需要顯示圖片時辜腺,就不需要向服務(wù)器請求休建,直接從緩存中加載就可以了。

實(shí)現(xiàn)的方法

  • 使用css的background屬性將圖片預(yù)加載到屏幕看不到的地方评疗,就像下面這樣测砂,只要圖片存儲的路徑不改變,在其他地方調(diào)用這些圖片是百匆,瀏覽器就會在渲染過程中使用預(yù)加載(緩存)的圖片邑彪,不需要使用css,但這種方法存在一些問題胧华,會增加頁面的整體加載時間,可以通過js來延遲加載預(yù)加載的圖片
preload-01 { background: url(-01.png) no-repeat -9999px -9999px; }
//也可以設(shè)置
{ width: 0; height: 0; display: none};
  • 還可以通過js來實(shí)現(xiàn)預(yù)加載寄症,這里打個小廣告:這是一個預(yù)加載插件,有興趣的同學(xué)可以看看矩动。
  • 這里再貼出網(wǎng)上的一些實(shí)現(xiàn):
<div class="hidden">
    <script type="text/javascript">
        <!--//--><![CDATA[//><!--
            var images = new Array()
            function preload() {
                for (i = 0; i < preload.arguments.length; i++) {
                    images[i] = new Image()
                    images[i].src = preload.arguments[i]
                }
            }
            preload(
                ";,
                ";,
                ";
            )
        //--><!]]>
    </script>
</div>
  • 還有就是通過ajax實(shí)現(xiàn)預(yù)加載有巧,不僅可以加載圖片,還可以預(yù)加載css悲没,js等篮迎。比直接使用js的好處在于加載js和css不會影響到當(dāng)前頁面。
window.onload = function() {  
    setTimeout(function() {  
        // XHR to request a JS and a CSS  
        var xhr = new XMLHttpRequest();  
        xhr.open('GET', 'http://domain.tld/preload.js');  
        xhr.send('');  
        xhr = new XMLHttpRequest();  
        xhr.open('GET', 'http://domain.tld/preload.css');  
        xhr.send('');  
        // preload image  
        new Image().src = "http://domain.tld/preload.png";  
    }, 1000);  
};  

上面代碼預(yù)加載了“preload.js”示姿、“preload.css”和“preload.png”甜橱。1000毫秒的延時是為了防止腳本掛起,而導(dǎo)致正常頁面出現(xiàn)功能問題栈戳。

參考文章

參考一
參考二

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末岂傲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子子檀,更是在濱河造成了極大的恐慌镊掖,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褂痰,死亡現(xiàn)場離奇詭異亩进,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)缩歪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門归薛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事主籍∠捌叮” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵崇猫,是天一觀的道長沈条。 經(jīng)常有香客問我需忿,道長诅炉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任屋厘,我火速辦了婚禮涕烧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘汗洒。我一直安慰自己议纯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布溢谤。 她就那樣靜靜地躺著瞻凤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪世杀。 梳的紋絲不亂的頭發(fā)上阀参,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機(jī)與錄音瞻坝,去河邊找鬼蛛壳。 笑死,一個胖子當(dāng)著我的面吹牛所刀,可吹牛的內(nèi)容都是我干的衙荐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼浮创,長吁一口氣:“原來是場噩夢啊……” “哼忧吟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起斩披,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤瀑罗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后雏掠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斩祭,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年乡话,在試婚紗的時候發(fā)現(xiàn)自己被綠了摧玫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖诬像,靈堂內(nèi)的尸體忽然破棺而出屋群,到底是詐尸還是另有隱情,我是刑警寧澤坏挠,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布芍躏,位于F島的核電站,受9級特大地震影響降狠,放射性物質(zhì)發(fā)生泄漏对竣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一榜配、第九天 我趴在偏房一處隱蔽的房頂上張望否纬。 院中可真熱鬧,春花似錦蛋褥、人聲如沸临燃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽膜廊。三九已至,卻和暖如春淫茵,著一層夾襖步出監(jiān)牢的瞬間爪瓜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工痘昌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钥勋,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓辆苔,卻偏偏與公主長得像算灸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子驻啤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案菲驴? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,728評論 1 92
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,506評論 25 707
  • 今天上午終于回歸了我們肥羊的寫作小組。真的特別感動骑冗,大家在迎接我的回歸赊瞬,感到很高興。感恩大家沒把我忘掉贼涩,感恩大家在...
    EvaingWu閱讀 166評論 0 1
  • 關(guān)于那些種種 有些想要記憶的都來不及紀(jì)錄 一些零碎 那天晚上 我夢見自己游蕩在一座山谷之間 沒有目的 沒有終點(diǎn) 就...
    枕北閱讀 146評論 0 0
  • java包為我們提供了很多線程安全(部分安全)的數(shù)據(jù)集合巧涧,涉及線程安全就必然會遇到鎖爭用和效率上的平衡,其實(shí)就是讀...
    藍(lán)灰_q閱讀 831評論 0 0