When you publish a swf, you can check its byte size in Windows Explorer or with Get Info on the Mac.
What's making it so big?
You can get a picture of how much content has to download in each frame (a frame's content will not display until it is completely downloaded) by doing this:
You can also get an idea of how it will download to a viewer's pc by choosing:
Open sitesample4.fla (made on the previous page or available via link under Files at right) and save it as sitesample5.fla. Looking at the timeline for this fla, you'll remember (or note now) that we left the first 10 frames blank so we could add a loader there later. The movie (website) itself starts in frame 10. So, in the labels layer, make a keyframe in frame 10 and label that frame "start".
The preloader is going to work by showing a preloading movieclip as soon as the movie starts and then loop between two frames, checking to see how much of the movie has downloaded. When all of the movie is loaded onto the user's harddrive, the preloader code will cause the playhead to jump to frame "start" (10). While the movie is loading, the preloader will calculate the percentage of the movie that has been loaded (from server to pc/mac) and jump to a corresponding frame in the preloading movieclip. The second thing to do to set up the preloader is to make a keyframe in frame 2 of the labels layer and label it "loading" (without the quotes).
In order to show the loading progress of the movie, we'll create a movieclip that is 100 frames long, and contains a progressive sequence (in this case, letters 'filling up'), so that we can jump to a frame that represents the percentage of bytes currently downloaded from the server to the user's computer out of the total number of bytes to be downloaded. Below is a picture of what the movieclip looks like at frame 20, and following is a description of how to make it

If you also (or instead) want a textfield to display the percent loaded: Add a textfield layer to the movie. In frame 1, make a dynamic text field named pct_txt (in the properties panel). Put a blank keyframe in frame 10 of that layer, so the textfield won't show when the main movie starts.
In the actions layer of the main movie, make frame 3 a keyframe and put this code in it:
if (getBytesLoaded() > 4 && getBytesLoaded() == getBytesTotal()) {
gotoAndPlay("start");
} else {
pct = Math.round(getBytesLoaded() / getBytesTotal() * 100);
// this is for the visual indicator movieclip:
loading_mc.gotoAndStop(pct);
// this is for the textfield indicator:
pct_txt.text = pct + "%";
gotoAndPlay("loading");
}
That tells the playhead to loop between frame 2 and 3 until the whole movie is loaded (getBytesLoaded == getBytesTotal) and then jump to frame start to begin. While the looping is happening, the visual indicator movieclip (loading_mc) is being sent to the frame corresponding to the percent of content currently loaded and the textfield is being updated to reflect that also. You can include either the visual indicator movieclip or the textfield indicator, or both.
Discussed on this page:
find size of published movie, find size of each frame in movie, see how movie looks at different connection speeds, add 100-frame preloader to beginning of movie
Files:
sitesample4.fla
In sitesample.zip, password required
Subscription:
A password may be obtained by subscription
An access password will be emailed to the address you specify within 24 hours of receipt of payment, and will remain active for 30 days thereafter. A list of all files currently available at the site may be viewed here.