Thursday, October 24, 2013

jQuery: How To Make Your Image based Website Load Faster

Hello Friends, Today I am writing my second tutorial post regarding optimization of webpage which contains bulks of images.

Let’s consider one scenario where you want to display hundreds of images at a time. And also your client wants this webpage should load faster.




Now here is the problem, webpage won’t get loaded fully unless all of its images get download first. Which means as number of images in webpage increases the load time of that webpage also increased.

To solve this problem we must reduce the webpage load time, indirectly it means that we need to load less amount of images.

Consider a scenario where we load only one default image at each place of actual images indicating that these actual images are getting downloaded and using Javascript we will download these actual images after window finishes its loading.

Following diagrams will help you to understand the flow.



as one image wont takes too much time to load, therefore webpage speed increase and it also help to improve user experience as it tells user that all images are in the process of download.

Now we will see some code to implement this flow.
First create html page to store images.

 <body>
    <div>
 <img data-image="[actual-image-path]" src="default-loading-image-path" class="item"/>
  <img data-image="[actual-image-path]" src="default-loading-image-path"/ class="item">
  <img data-image="[actual-image-path]" src="default-loading-image-path"/ class="item">
  <img data-image="[actual-image-path]" src="default-loading-image-path"/ class="item">
</div>
  </body>

here we have created four images,where we set default loading image in source property and actual image in image data property of image tag.

Now we will add jQuery script in head section to load all actual images after page get loaded.

 <script  type="text/javascript">
 $('document').ready(function(){
             //execute after window finishes loading
    $(window).load(function(){
                   //search each image by its class name
  $('.item').each(function(index){
                          //replace current image path with actual image path
 $(this).attr('src', $(this).data('image'));
  });
});
 });
</script>

script get executed after all component get downloaded and browser is ready to render them. at that time we load all images.


Hope it will help you.

Zainul Abedin Shaikh

Founder of Zainabed, Passionate about programming. Follow him on Twitter

And if you enjoyed this post, please consider sharing it on Facebook, Google+ or Twitter below