Mempercepat Blog #3 - Pasang Script Lazy Load Untuk Gambar

Memasang Plugin Lazy Load Image di Blogger

Salah satu masalah umum yang kerap ditemui oleh pengguna Blogger adalah sulitnya mengatur expires header (browser caching). Bukan sulit lagi, tapi emang nggak bisa. Berhubung Blogger itu produk Google, jadi status kita cuma nebeng dan nggak bisa mengaturnya sendiri.

Penejelasan Singkat Tentang Cache

Ketika pengungjung pertama kali membuka blog kamu, browser akan melakukan beberapa permintaan untuk men-download semua konten dari blog. Idealnya, semua file tadi disimpan di dalam cache browser si pengunjung. Agar ketika dia kembali mengunjungi blog kamu, semua file bisa langsung diambil dari cache browser. Ini jelas akan meringankan loading blog, karena browser nggak perlu terus-terusan request file-nya ke server. Seberapa lamanya cache tersebut disimpan di browser bisa kamu atur sendiri. Beberapa jenis file yang perlu diatur cache-nya antara lain:
  1. Gambar: jpg, gif, png
  2. Favicon/ico
  3. Javascript
  4. CSS

Itu idealnya ya. Dan itu hanya bisa dilakukan di blog atau website yang memiliki hosting sendiri (self-hosted).

Karena ini Blogger, kamu NGGAK BISA atur expires header tersebut untuk mengontrol cache browser. Maka setiap kali pengunjung membuka blog kamu, browser akan langsung men-download ulang semua file langsung dari server. Maka waktu tempuh yang diperlukan untuk menampilkan halaman blog menjadi lebih lama. Salah satu faktor yang membuat score YSlow di GTmetrix nggak bisa dapet A (100%) kebanyakan ya karena masalah expires header ini.

But no worries. Kamu bisa pake script lazy load image untuk Blogger untuk mengatasi masalah expires header. Efek lainnya, page speed jadi meningkat dan loading blog jadi lebih cepat. Yuk langsung aja ke scriptnya.

Apa Itu Plugin Lazy Load?

Sebuah script yang akan menunda pemanggilan file sebelum dilakukannya aktifitas tertentu. Untuk script Lazy Load Gambar Blogger di artikel ini, pemanggilan file akan ditunda sebelum adanya aktifitas scroll halaman.

Cara Memasang Script Lazy Load di Blogspot

  1. Masuk ke menu Theme, lalu pilih Edit HTML.
  2. Cari kode tag HTML image <img> yang merupakan kode dari thumbnail blog. Di setiap template pasti berbeda, jadi saya contohkan kode thumbnail dari template saya. Buat kamu, cari sendiri ya kodenya. Pasti mirip-mirip.
    <img expr:alt='data:post.title' expr:title='data:post.title' expr:src='resizeImage(data:post.firstImageUrl, 225, "225:170")'/>

  3. Udah ketemu?
    - Tambahkan class='lazy' pada tag image-nya.
    - Ubah expr:src menjadi expr:data-src.
    - Tambahkan src dan value-nya diisi dengan data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=.

    Sehingga hasil akhirnya menjadi seperti ini:
    <img class='lazy' expr:alt='data:post.title' expr:title='data:post.title' expr:data-src='resizeImage(data:post.firstImageUrl, 225, "225:170")' src='data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs='/>

  4. Ini dia bagian utamanya, yaitu script Lazy Load Gambar untuk Blogger. Simpan kode ini SEBELUM / DIATAS </body>.
    <script type='text/javascript'>//<![CDATA[
    function ignielLazyLoad(){eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('u B(){Y(v e=o.1r("B"),t=0;t<e.1q;t++)Q(e[t])&&(e[t].N=e[t].1p("1n-N"))}u Q(e){v t=e.1t();Z t.1x>=0&&t.1w>=0&&t.1v<=(y.1u||o.T.1m)&&t.1k<=(y.1c||o.T.1b)}v b=["\\r\\m\\m\\D\\G\\a\\f\\c\\M\\n\\p\\c\\a\\f\\a\\k","\\h\\f","\\r\\c\\c\\r\\l\\A\\D\\G\\a\\f\\c","\\g\\h\\r\\m","\\p\\l\\k\\h\\g\\g","\\V\\1a\\1e\\R\\h\\f\\c\\a\\f\\c\\M\\h\\r\\m\\a\\m","\\w\\p\\a\\1l\\p\\c\\k\\n\\l\\c","\\r","\\1f\\w\\a\\k\\L\\1j\\a\\g\\a\\l\\c\\h\\k\\W\\g\\g","\\g\\a\\f\\q\\c\\A","\\w\\p\\a\\k\\W\\q\\a\\f\\c","\\c\\a\\p\\c","\\m\\h\\l\\w\\F\\a\\f\\c\\D\\g\\a\\F\\a\\f\\c","\\1i\\h\\m\\L","\\l\\g\\n\\l\\1g","\\p\\l\\k\\h\\g\\g\\1h\\h\\J","\\c\\h\\J","\\q\\a\\c\\S\\h\\w\\f\\m\\n\\f\\q\\R\\g\\n\\a\\f\\c\\1z\\a\\l\\c","\\A\\k\\a\\X","\\a\\1y\\a\\l","\\q\\a\\c\\D\\g\\a\\F\\a\\f\\c\\S\\L\\1F\\m","\\p\\l\\k\\h\\g\\g\\U\\a\\n\\q\\A\\c","\\n\\f\\f\\a\\k\\U\\a\\n\\q\\A\\c","\\J\\k\\a\\G\\a\\f\\c\\V\\a\\X\\r\\w\\g\\c","\\n\\c\\a\\F"];u I(d,j){y[b[0]]?y[b[0]](d,j):y[b[2]](b[1]+d,j)}I(b[3],B),I(b[4],B),o[b[0]](b[5],u(){b[6];Y(v d=o[b[8]](b[7]),j=d[b[9]],s=/1D|1B/i[b[11]](1G[b[10]])?o[b[12]]:o[b[13]],C=u(d,j,s,C){Z(d/=C/2)<1?s/2*d*d*d+j:s/2*((d-=2)*d*d+2)+j};j--;){d[b[1C]](j)[b[0]](b[14],u(d){v j,E=s[b[15]],x=o[b[1A]](/[^#]+$/[b[19]](1H[b[18]])[0])[b[17]]()[b[16]],z=s[b[1d]]-y[b[1s]],O=z>E+x?x:z-E,K=1o,H=u(d){j=j||d;v x=d-j,z=C(x,E,O,K);s[b[15]]=z,K>x&&P(H)};P(H),d[b[1E]]()})}});',62,106,'||||||||||x65|_0x1b5d|x74|_0xdd48x2||x6E|x6C|x6F||_0xdd48x3|x72|x63|x64|x69|document|x73|x67|x61|_0xdd48x4||function|var|x75|_0xdd48x7|window|_0xdd48x8|x68|lazy|_0xdd48x5|x45|_0xdd48x6|x6D|x76|_0xdd48xb|registerListener|x70|_0xdd48xa|x79|x4C|src|_0xdd48x9|requestAnimationFrame|isInViewport|x43|x42|documentElement|x48|x44|x41|x66|for|return|||||||||||x4F|clientWidth|innerWidth|21|x4D|x71|x6B|x54|x62|x53|left|x20|clientHeight|data|900|getAttribute|length|getElementsByClassName|22|getBoundingClientRect|innerHeight|top|right|bottom|x78|x52|20|trident|24|firefox|23|x49|navigator|this'.split('|'),0,{}));} eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('j 4=["\\7\\9\\9\\e\\d\\a\\b\\8\\i\\g\\h\\8\\a\\b\\a\\k","\\f\\c\\7\\9","\\7\\8\\8\\7\\m\\l\\e\\d\\a\\b\\8","\\c\\b\\f\\c\\7\\9"];5[4[0]]?5[4[0]](4[1],6,!1):5[4[2]]?5[4[2]](4[1],6):5[4[3]]=6;5[4[0]]?5[4[0]](4[1],6,!1):5[4[2]]?5[4[2]](4[1],6):5[4[3]]=6;',23,23,'||||_0xdfb4|window|ignielLazyLoad|x61|x74|x64|x65|x6E|x6F|x76|x45|x6C|x69|x73|x4C|var|x72|x68|x63'.split('|'),0,{}));
    //]]></script>

  5. Setelah selesai, klik tombol Save theme.

Nggak melulu harus gambar thumbnail aja. Di bagian lain pun, selama itu kode tag image <img>, bisa ditambahkan kok.

Cek lagi nilai page speed kamu di GTmetrix dan periksa di bagian YSlow. Semoga masalah di bagian Add Expires header bisa teratasi dengan plugin Lazy Load Blogspot ini.

Kok Gambarnya Jadi Blank Kalau di GTmetrix?

Iya, emang kaya gitu. Seperti yang udah dijelasin diatas, pemanggilan gambar ditunda sebelum ada aktifitas scroll. Berhubung GTmetrix nggak melakukan aktifitas scroll ketika pengecekan halaman, maka gambarnya masih blank.

Kok Nilai YSlow di Bagian Add Expires header-nya Masih Belum Dapat A?

Ayo...cek lagi masalah disana apa. Dan inget lagi ini artikel soal apa.
Ini script Lazy Load untuk gambar, bukan untuk lainnya. Jadi masalah yang muncul disana hanya tersisa soal Javascript, CSS, font, dsb. KECUALI SOAL GAMBAR, karena gambar sudah teratasi oleh script diatas.

Memasang Script Lazy Load Image di Blogspot
Dicek lagi, link yang menyebabkan masalah expires header diatas BUKAN link gambar, kan? Karena masalah gambar sudah teratasi.

Soal masalah yang lainnya semoga bisa dibahas di artikel berikutnya. Silakan kasih komen pake akun asli kalau masih ada yang kurang paham.
Baca Juga

DONASI VIA PAYPAL

Bantu berikan donasi jika artikelnya dirasa bermanfaat. Donasi akan digunakan untuk memperpanjang domain www.igniel.com. Terima kasih.

Artikel Terkait

27 Komentar

  1. mantepp setelah praktek loading blog jadi joss

    ReplyDelete
  2. kalau blog sy, pagespeed 100 tap yslow cuma 88.... apa perlu dipraktekin trik di atas mb?

    ReplyDelete
    Replies
    1. Perlu. Kan udah ditulis diatas. Cara ini buat meningkatkan score YSlow, terutama bagian Add Expires header :)

      Delete
    2. mksh mb. Oya, sekalian minta dibuatin trik utk mengurangi jumlah snippet di homepage yg muncul mb. Kalau bisa pengurangannya ditentuin dr baris ato jumlah huruf. Biar rapi mb...

      Delete
  3. Keren nih, fast load memang yg slalu sya inginkan.

    ReplyDelete
  4. Ijin pake scriptnya ya mbak..kayaknya cocok niih buat blog saya biar loadingnya gak lemot kyak siput :D

    ReplyDelete
  5. kalo boleh ada saran/ masukan sis buat blog ane dikumpulbagi.blogspot.co.id .. udah ngikutin tutornya dari mempercepat blog 1-3 udah naik sih dari skor E ke D,.. tapi untuk ningkatin lagi gimana ya, setidknya B lah .. thanks sis :D

    ReplyDelete
  6. min, kode nya banyak banget yang di templateku, yang mana yang dipilih

    ReplyDelete
  7. Gimana ni, saya pakai template Cotempo bawaan google, saya cari kode diatas tapi tidak ada :( HELP

    ReplyDelete
  8. kak, klo utk gambar yg di widget gimana (logo di header)? terus jg setelah praktek masih ada masalah utk thumbnail yg ada di sidebar (recent post/popular/dll). lanjut tutor lg kak utk yg JS :D terutama yg dr adsense
    *terimakasih, post sangat bermanfaat :)

    ReplyDelete
  9. Ijin bookmark dlue y mb,, kyknye cocok nie di blog ane,,

    ReplyDelete
  10. mbak, saya bingung, klo sempurna sama tag html image kyak yang dicontohin ditas gak ada yang sama, apa yg ni betul mbak?

    img expr:alt='data:title' expr:height='data:height' expr:id='data:widget.instanceId + "_headerimg"' expr:src='data:sourceUrl' expr:width='data:width' style='display: block'/></h1

    ReplyDelete
    Replies
    1. Iya yang itu bisa. Karena isi atribut img tiap blog beda-beda. Dicoba aja. Semoga berhasil.

      Delete
  11. Tapi, pas di Coba yg berhasil Cuma Gambar logo blog, Gambar selainnya seperti thumbnail related post, post updated gak berhasil

    ReplyDelete
    Replies
    1. Cari lagi tag <img yang lain. Tambahkan class 'lazy' ke semua tag img tersebut biar semua gambar berubah jadi lazy load.

      Delete
  12. Kalo HTML Image nya pake Javascript gimana mbak?
    Udah nyoba cara diatas gak work.

    ReplyDelete
    Replies
    1. cari kode [img src] di dalam JSnya dan ubah menjadi [img class="lazy" src="bblablabla"]

      Delete
  13. kalo tag img saya udah pasang class yang lain gimana mbak cara nambar nya?
    img class='posts-thumb' gitu??

    ReplyDelete
    Replies
    1. Kalau class di dalam CSS bisa lebih dari satu. Jadi kodenya [img class='post-thumb lazy']

      Delete
    2. thanks mbak berhasil (y)

      Delete
  14. Terimakasih dan izin menerapkannya ya mba :D

    ReplyDelete
  15. Pakai cara ini aku nemu satu masalah, ketika discroll gambar tetap blank/gak muncul, kasus ini aku nemu kalau pake template Arl*na, walau dia udah nyediain Lazyload tapi kurang efektif, kamu tau gimana cara solve nya?
    Makasih.

    ReplyDelete
    Replies
    1. 1) Kalau di template sebelumnya ada script lazyload, hapus dulu biar gak bentrok.
      2) Cek dulu apa di template itu thumbnailnya dibikin pake javascript. Kalau iya, cek komentar Raka Aryanda diatas.

      Kalau masih belum bisa, tulis disini kode <img> di template itu.

      Delete
  16. thanks sob berguna sangat

    berfungsi di https://www.majalahlovebird.com/2018/08/manfaat-sawi-putih-untuk-lovebird.html

    ReplyDelete
    Replies
    1. plz jadilah pengkomen yang baik, jangan menebar backlink seenaknya dikomentar, bersainglah secara sehat, jangan menjatuhkan blog lain dengan berkomentar link hidup/mati. laman dg komen penuh link akan menjatuhkan sebuah laman dimata google. be smart plz

      Delete
  17. kak, untuk mengatasi masalah yang css dan javascript gamana? seperti script dari analytics dan adsense. tolong pencerahannya. hehehe

    ReplyDelete

Centang kotak "NOTIFY ME" agar mendapatkan notifikasi melalui email ketika ada yang membalas komentar kamu.