Chances are that a browser visiting your web site has seen it before. In this case, some parts of your site are probably still stored in the browser cache. A few of those parts may have changed in the meantime (such as the writing on your top page) but others will be the same as before in which case there is no real need to transmit them again. Not transmitting things obviously reduces bandwidth usage. Loading large image files from a local hard disk cache rather than over the network noticably speeds up the display of web pages.
The way this idea is implemented in the HTTP protocol is called conditional GET. When a browser requests a file that it has downloaded before, it will send an If-Modified-Since header.
If the document has not been modified from the indicated version, it is not retransmitted. There will be just a 304 Not Modified response from the server instead. For static files, this is automatically implemented by all common web servers, so unlike with content compression you do not have to do anything to use this feature. Dynamic files are a different matter. If you want to support conditionals GETs for them, you have to implement it yourself. This is not often done, and the effort does not really pay off most of the time (since dynamic pages have a tendency to change too often to be cached anyway). One case where it is worth to support conditional GETs, however, are RSS feeds. For the usual blog, they do not change more than once or twice a day, but they are polled much more often than that, often hourly.
During the last (admittedly not very busy) week, the T-Files RSS feed (about 5300 bytes at the time) has been requested 304 times. But it had to be transmitted only 17 times, and half of those transmissions have been compressed to 1900 bytes. This brings the average transfer size down 96% to just 195 bytes.



