Tuesday 18 February 2014

jQuery Lazy Load Plugin

Ada banyak faktor kenapa lalu lintas blog kehilangan pengunjung, salah satunya adalah kecepatan loading blog yang memerlukan waktu lama. Hal seperti ini benar-benar akan berdampak buruk buat blog Anda, jadi penting buat Anda untuk memperhatikan beban dari template blog Anda. Salah satu yang membuat blog kita loading lebih lama karena gambar atau photo, lantas apa kita tidak harus menggunakan gambar untuk blog kita? Tentu saja tidak, seharusnya kita harus mengambil suatu langkah tertentu sehingga beban dari blog kita berkurang dan tampil lebih cepat.

Nah, pada posting ini saya akan berbagi satu tips untuk mempercepat loading blog Anda dengan menggunanakan Plugin jQuery Lazy Image Load. Cara kerja plugin ini adalah memperlambat atau menunda loading gambar di blog Anda. Gambar yang muncul hanya pada halaman yang terlihat dan gambar yang lain akan terlihat saat kita mengscroll halaman blog ke bawah. Dengan begitu loading blog akan lebih cepat dan dalam beberapa kasus tertentu dapat membantu mengurangi beban server. Untuk lebih jelasnya silahkan kunjungi Appelsiini

Cara Install

  • Login ke Blogger Anda
  • Klik Temlate dan pilih Edit HTML
  • Cari tag </head> gunakan CTRL+F untuk mencari
  • Selanjutnya salin javascript dibawah ini tepat sebelum tag </head>
<script type="text/javascript">
/*
* Lazy Load - jQuery plugin for lazy loading images
* Copyright (c) 2007-2012 Mika Tuupola
* Licensed under the MIT license : http://www.opensource.org/licenses/mit-license.php
* Project home : http://www.appelsiini.net/projects/lazyload
* Version: 1.8.3
*/
(function($, window, document, undefined) {
var $window = $(window);

$.fn.lazyload = function(options) {
var elements = this;
var $container;
var settings = {
threshold: 0,
failure_limit: 0,
event: "scroll",
effect: "show",
container: window,
data_attribute: "original",
skip_invisible: true,
appear: null,
load: null
};

function update() {
var counter = 0;
elements.each(function() {
var $this = $(this);
if (settings.skip_invisible & amp; & amp; !$this.is(":visible")) {
return;
}
if ($.abovethetop(this, settings) ||
$.leftofbegin(this, settings)) {
/* Nothing. */
} else if (!$.belowthefold(this, settings) & amp; & amp; !$.rightoffold(this, settings)) {
$this.trigger("appear");
/* if we found an image we'll load, reset the counter */
counter = 0;
} else {
if (++counter & gt; settings.failure_limit) {
return false;
}
}
});

}

if (options) {
/* Maintain BC for a couple of versions. */
if (undefined !== options.failurelimit) {
options.failure_limit = options.failurelimit;
delete options.failurelimit;
}
if (undefined !== options.effectspeed) {
options.effect_speed = options.effectspeed;
delete options.effectspeed;
}

$.extend(settings, options);
}

/* Cache container as jQuery as object. */
$container = (settings.container === undefined ||
settings.container === window) ? $window : $(settings.container);

/* Fire one scroll event per scroll. Not one scroll event per image. */
if (0 === settings.event.indexOf("scroll")) {
$container.bind(settings.event, function(event) {
return update();
});
}

this.each(function() {
var self = this;
var $self = $(self);

self.loaded = false;

/* When appear is triggered load original image. */
$self.one("appear", function() {
if (!this.loaded) {
if (settings.appear) {
var elements_left = elements.length;
settings.appear.call(self, elements_left, settings);
}
$("<img/>")
.bind("load", function() {
$self
.hide()
.attr("src", $self.data(settings.data_attribute))[settings.effect](settings.effect_speed);
self.loaded = true;

/* Remove image from array so it is not looped next time. */
var temp = $.grep(elements, function(element) {
return !element.loaded;
});
elements = $(temp);

if (settings.load) {
var elements_left = elements.length;
settings.load.call(self, elements_left, settings);
}
})
.attr("src", $self.data(settings.data_attribute));
}
});

/* When wanted event is triggered load original image */
/* by triggering appear. */
if (0 !== settings.event.indexOf("scroll")) {
$self.bind(settings.event, function(event) {
if (!self.loaded) {
$self.trigger("appear");
}
});
}
});

/* Check if something appears when window is resized. */
$window.bind("resize", function(event) {
update();
});
/* With IOS5 force loading images when navigating with back button. */
/* Non optimal workaround. */
if ((/iphone|ipod|ipad.*os 5/gi).test(navigator.appVersion)) {
$window.bind("pageshow", function(event) {
if (event.originalEvent.persisted) {
elements.each(function() {
$(this).trigger("appear");
});
}
});
}

/* Force initial check if images should appear. */
$(window).load(function() {
update();
});
return this;
};

/* Convenience methods in jQuery namespace. */
/* Use as $.belowthefold(element, {threshold : 100, container : window}) */

$.belowthefold = function(element, settings) {
var fold;
if (settings.container === undefined || settings.container === window) {
fold = $window.height() + $window.scrollTop();
} else {
fold = $(settings.container).offset().top + $(settings.container).height();
}

return fold & lt; = $(element).offset().top - settings.threshold;
};
$.rightoffold = function(element, settings) {
var fold;

if (settings.container === undefined || settings.container === window) {
fold = $window.width() + $window.scrollLeft();
} else {
fold = $(settings.container).offset().left + $(settings.container).width();
}

return fold & lt; = $(element).offset().left - settings.threshold;
};
$.abovethetop = function(element, settings) {
var fold;
if (settings.container === undefined || settings.container === window) {
fold = $window.scrollTop();
} else {
fold = $(settings.container).offset().top;
}

return fold & gt; = $(element).offset().top + settings.threshold + $(element).height();
};
$.leftofbegin = function(element, settings) {
var fold;
if (settings.container === undefined || settings.container === window) {
fold = $window.scrollLeft();
} else {
fold = $(settings.container).offset().left;
}

return fold & gt; = $(element).offset().left + settings.threshold + $(element).width();
};

$.inviewport = function(element, settings) {
return !$.rightoffold(element, settings) & amp; & amp;
!$.leftofbegin(element, settings) & amp; & amp;
!$.belowthefold(element, settings) & amp; & amp;
!$.abovethetop(element, settings);
};

/* Custom selectors for your convenience. */
/* Use as $("img:below-the-fold").something() or */
/* $("img").filter(":below-the-fold").something() which is faster */

$.extend($.expr[':'], {
"below-the-fold": function(a) {
return $.belowthefold(a, {
threshold: 0
});
},
"above-the-top": function(a) {
return !$.belowthefold(a, {
threshold: 0
});
},
"right-of-screen": function(a) {
return $.rightoffold(a, {
threshold: 0
});
},
"left-of-screen": function(a) {
return !$.rightoffold(a, {
threshold: 0
});
},
"in-viewport": function(a) {
return $.inviewport(a, {
threshold: 0
});
},
/* Maintain BC for couple of versions. */
"above-the-fold": function(a) {
return !$.belowthefold(a, {
threshold: 0
});
},
"right-of-fold": function(a) {
return $.rightoffold(a, {
threshold: 0
});
},
"left-of-fold": function(a) {
return !$.rightoffold(a, {
threshold: 0
});
}
});
</script>
<script type="text/javascript">
$(function() {
$("img").lazyload({
placeholder: "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVUcyMdKXknHXxrG9ppLRSvSEIcmgHcU-5tE1rlNWStjMp-CjytYatrmACKXE3L1iuEHswgW_f7kgXicYhZ8y4CNgvLSg68CqvFH7GCg_c6eKbBtPicuISJIFJlPo84Hr7qPOtVIhquz8/s1600/grey.gif",
threshold: 200
});

});
</script>
  • Langkah terakhir klik Simpan template - selesai !
Dengan menyelesaikan langkah diatas Anda telah berhasil menginstall lazy image load diblog Anda. Akhir kata semoga tips yang mudah ini bermanfaat buat Anda dan jangan lupa untuk memberi 1+, like atau share posting ini.

Ditulis Oleh : Unknown // 08:58
Kategori:

0 comments:

Post a Comment