Question

Preloading pictures on page

Asked by: josefkocarek

I have build website www.balzannasrv.com which have many pictures on the home page (2nd page). It seams to load the page wery slow. I am using flash animation. The animation is sometimes finished before all pictures are loaded. It looks like mess. What can I do to preload the pictures and than show the page?
J0K0

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2006-01-18 at 19:54:25ID21701986
Tags

preload_image_object

Topic

Miscellaneous Web Development

Participating Experts
5
Points
250
Comments
17

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. flash preloader
    i need a preloader for flash that do this: while running a certain movie, preload the other movie, and when the preloading is done, view the loaded movie. please reffer me to good tutorials and examples... thanks. zahimi.
  2. preloader question
    Hello.....this site makeoevr looks great!!! I am using Flash 4 until I upgrade shortly. But for now I have to fix a preloader issue. I've used this preloader b4 ok but now with a file 300fr's plus and 500k the movie loads before the preloader even starts it's % count. The I ...
  3. Preloader
    Excuse the laziness of this but its in a hurry and i dont have time to trawl the web. I have a movie with 2 scenes, preloader and content I need an animation (rectangle bar filling up etc) with a percentage loaded text bing displayed beside it, then when the movie is loaded...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: speak2abPosted on 2006-01-19 at 00:07:39ID: 15737005

you may have to write a script to handle that.

 

by: ljo8877Posted on 2006-01-19 at 00:27:03ID: 15737065

Preloading is not likely to help. In fact it might hurt performance. Preloading, which downloads images in the background by creating an image object in JavaScript, is useful when the images are not initially displayed. For example mouseover images or on click images benefit from preloading. All of your images are part of the initial display so preloading won't speed things up.

I have seen some articles that contend loading one large image is faster than loading several small images. This suggests you could improve loading by combining the images in each column and those in the row on the bottom.

Many of your images are text with a background. You might consider using one background image in each box (a floated div) and using styled text. This would reduce the number of images and the size.

Otherwise, poor loading performance is the price of the design that relys heavily on images.

 

by: GavinMannionPosted on 2006-01-19 at 03:35:27ID: 15737883

I am not up to scratch on the performance issues mentioned by ljo8877 but here is how you do it


    <SCRIPT language="JavaScript">
    <!--

    if (document.images)
    {
      preload_image_object = new Image();
      // set image url
      image_url = new Array();
      image_url[0] = "http://mydomain.com/image0.gif";
      image_url[1] = "http://mydomain.com/image1.gif";
      image_url[2] = "http://mydomain.com/image2.gif";
      image_url[3] = "http://mydomain.com/image3.gif";

       var i = 0;
       for(i=0; i<=3; i++)
         preload_image_object.src = image_url[i];
    }

    //-->
    </SCRIPT>    
 

 

by: plauwaerPosted on 2006-01-19 at 04:37:29ID: 15738228

I've looked at you're site:

For photo's you should use JPG (or some times PNG) not GIF! GIF is beter for illustrations and text (sharp lines) not for photo's. For photo's the files become to big. (JPG also supports more colors, what is also an advantage for photo's. GIF (256 colors) JPG (16 millions colors)

for example: http://www.balzannasrv.com/images/aboutus/wedding-1.gif

will be (for example) 3 times smaller if you use .JPG

Patrick

 

by: ljo8877Posted on 2006-01-19 at 09:49:29ID: 15740838

No offense intended GavinMannion, there is a detail to correct in your script. The for loop doesn't stop and wait for an image to download. So the way you have it, it really doen't do the job except for small mouseover images. When the for loop starts the next image, it will stop downloading the previous image if you use only one image object.

The script should be change as follows, so all images will download in the background and not just the last.

<SCRIPT language="JavaScript">
    <!--

    if (document.images)
    {
      image_url = new Array();
      imag_url[0] = new Image();
      image_url[0].src = "http://mydomain.com/image0.gif";
      imag_url[1] = new Image();
      image_url[1].src = "http://mydomain.com/image1.gif";
      imag_url[2] = new Image();      
      image_url[2].src = "http://mydomain.com/image2.gif";
      imag_url[3] = new Image();
      image_url[3].src = "http://mydomain.com/image3.gif";
    }

    //-->
    </SCRIPT>

This way each image has its own image object.

 

by: kiddangerPosted on 2006-01-20 at 01:06:03ID: 15747396

language= is severely deprecated in client-side scripting

If the images are actually numbered sequentially, this should do it.

<script type="text/javascript">
if(document.images) {
  for(var i=0; i<4; i++) {
    image_url[i] = new Image();
    image_url[i].src = "/image" + i + ".gif";
    }
  }
</script>

 

by: josefkocarekPosted on 2006-01-21 at 09:02:36ID: 15756696

Thanks guys for the script. I am not so familiar with the java scripting. Where should I place the script.
I didn't understand the coment from kiddanger. Could you please explain how it should be integrated?

J0K0

 

by: ljo8877Posted on 2006-01-21 at 12:28:46ID: 15757587

The script goes in the head section of the page

<head>
    <title>your title</title>
    [other stuff like meta tags and links]

    <script type="text/javascript">
             if (document.images) {
                   image_url = new Array();
                   imag_url[0] = new Image();
                   image_url[0].src = "/image0.gif";
                   imag_url[1] = new Image();
                   image_url[1].src = "/image1.gif";
                   imag_url[2] = new Image();      
                   image_url[2].src = "/image2.gif";
                   imag_url[3] = new Image();
                   image_url[3].src = "/image3.gif";
           }
    </script>
</head>

Kiddanger is referring to the use of language= is the script tag. That is obsolete and type should be used as shown above.

Kiddanger and GavinMannion both offer techniques that have some maintenance benefits.

Kiddanger is showing an alternative script that is more compact and in some ways flexible; however, it is dependent on the naming convention used for images. In his example, the images are named image0.gif, image1.gif and so on. This lets you use a loop that creates the names and does the preload. Change the 4 to the last image number.

 <script type="text/javascript">
     var image_url = new Array();
     if(document.images) {
         for(var i=0; i<4; i++) {
             image_url[i] = new Image();
             image_url[i].src = "/image" + i + ".gif";
         }
     }
 </script>

GavinMannion's plan is for you to create an array of the image name's and paths and then use a loop. I've repeated his example from earlier with some modification to accommodate issue discussed earlier.

<script type="text/javascript?>

    if (document.images)    {
     
         // set image url
         image_url = new Array();
         image_url[0] = "/image0.gif";
         image_url[1] = "/image1.gif";
         image_url[2] = "/image2.gif";
         image_url[3] = "/image3.gif";

         preload_image_object = new Array();
         for(var i=0; i<=image_url.length; i++) {
             preload_image_object[i] = new Image();
             preload_image_object.src = image_url[i];
        }
    }
</script>

Choose the technique you are comfortable with and requires the least effort to implement.

Kiddanger's technique is excellant if your image naming convention fits. The images would all have the same name plus a sequencial number. This can make adding a image easy and keeps the code small.

GavinMannion's technique works regardless of how the images are named. You just add to the image_url array. Then a loop will go through the array and preload each image.

You can simplify that a bit like this

         image_url[image_url.length] = "/image0.gif";
         image_url[image_url.length] = "/image1.gif";
         image_url[image_url.length] = "/image2.gif";
         image_url[image_url.length] = "/image3.gif";

Then you don't have to know the array number.


 

by: ljo8877Posted on 2006-01-21 at 12:30:47ID: 15757602

Oops. I made a mistake in this example. The [i] had to be added to this line preload_image_object.src = image_url[i]; like preload_image_object[i].src = image_url[i]; as shown below.

<script type="text/javascript?>

    if (document.images)    {
     
         // set image url
         image_url = new Array();
         image_url[0] = "/image0.gif";
         image_url[1] = "/image1.gif";
         image_url[2] = "/image2.gif";
         image_url[3] = "/image3.gif";

         preload_image_object = new Array();
         for(var i=0; i<=image_url.length; i++) {
             preload_image_object[i] = new Image();
             preload_image_object[i].src = image_url[i];
        }
    }
</script>

 

by: ljo8877Posted on 2006-01-21 at 12:35:43ID: 15757624

And in the explanation of Kiddanger's technique this line
     Change the 4 to the last image number.
should say
    Change the 4 to the one more than last image number.

 

by: kiddangerPosted on 2006-01-21 at 17:20:05ID: 15758648

Yes, good explanation.  My routine was just following the other example.  You don't normally have images with incremental numbers associated with their names, but sometimes you do, such as with galleries.

Even though these would be used as incremental.  Here is way to use them that will not matter what the names are.

<script type="text/javascript">
var image_url = new Array();
var imageargs = ["die1.gif","die2.gif","die3.gif","die4.gif","die5.gif","die6.gif"];
if(document.images) {
  for(var i=0; i<imageargs.length; i++) {
    image_url[i] = new Image();
    image_url[i].src = '/images/' + imageargs[i];
    document.write('<img src="' + image_url[i].src + '" />');
    }
  }
</script>

Ex. http://kiddanger.com/lab/jsfilenames.asp

 

by: kiddangerPosted on 2006-01-21 at 17:21:05ID: 15758650

This line was actually a debug and is commented out in the example:
   document.write('<img src="' + image_url[i].src + '" />');

 

by: ljo8877Posted on 2006-02-04 at 14:48:22ID: 15874069

Thanks for the grade! We're glad to help; however, I see that you haven't yet change your site??

 

by: josefkocarekPosted on 2006-02-06 at 08:37:57ID: 15884171

How do I know that it is working. I tried tro open the page with 56K modem and it didn't go in the order I have set it up.

J0K0

 

by: ljo8877Posted on 2006-02-06 at 11:48:51ID: 15886082

Please refer to my first comment. I don't believe you will see an improvement.

What happens is that the images start to download in the background while the html continues to download. The html page finishes much faster than the images and starts to download the images again. The browser deals with this so I don't think the image downloads twice, but the second call is deferred until the image is in cache.

Since page text downloads very quickly, preloading the images hasn't really gained anything ... unless of course--maybe--if you preloaded the images on the first page where they don't display so they'd be in the browser's cache when the second page is downloaded.

Otherwise, you need to try one of the other solutions mentioned earlier:

reduce the number of images
   1. Combine contiguous images
   2. Use one image for all text only boxes

make the images smaller
    1. try different formats
    2. reducing quality with your image software

 

by: kiddangerPosted on 2006-02-06 at 19:26:40ID: 15889288

It doesn't make the page load faster.  It preloads the images so when you call for them, they come out of cache instead of loading from the web site.  You can split up the image loading and the image displaying into separate functions and then use a DHTML onload to display them but you will see the red x box until the image loads.  To not see it, you turn off display and then after everything is loaded, you then turn everything on with display: block or display: inline.

Try this:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<script type="text/javascript">
var image_url = new Array();
var imageargs = ["die1","die2","die3","die4","die5","die6"];
if(document.images) {
  for(var i=0; i<imageargs.length; i++) {
    image_url[i] = new Image();
    image_url[i].src = '/images/' + imageargs[i]+'.gif';
    }
  }
function showit() {
  for(var i=0; i<imageargs.length; i++) {
    document.getElementById(imageargs[i]).style.display='inline';
    }
  }
</script>
</head>
<body onload="showit()">
<img id="die1" src="/images/die1.gif" style="display: none" />
<img id="die2" src="/images/die2.gif" style="display: none" />
<img id="die3" src="/images/die3.gif" style="display: none" />
<img id="die4" src="/images/die4.gif" style="display: none" />
<img id="die5" src="/images/die5.gif" style="display: none" />
<img id="die6" src="/images/die6.gif" style="display: none" />
</body>
</html>

 

by: kiddangerPosted on 2006-02-06 at 19:27:46ID: 15889295

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...