On second thought, you may not want to implement it. I forgot about the shout box which also would not get updated if the browser caches everything. I don't know of any way to have the browser cache only the stats and not the shout box .... other than what you already did.
erm, it's not that clean cut, you can have individual settings for each file/page, or type of content (such as telling a browser it doesn't have to check freshness of images for a long time (because they're not likely to change) by appliying settings to the /images/ folder and have them inherited by all the child objects of the /images/ folder)
but it also depends on the method, there are various types of caching, there are 2 main ones
in the first all content is labeled with values (using http headers) so that clients can determine when it was last modified, and in short, once a client has a local copy (and as long as the server is configured correctly), the client only checks if the content has changed (by sending "conditional" GET requests, ie, telling the server to only resend the content if it has changed from the browsers local copy, hance the server needs to be setup properly, otherwise it won't work, and all content will just be resent all the time), if it has been changed it's resent, if it hasn't, then the server should only send a HTTP 304 code which means "not modified" and the http headers, without any content
beacuse the client is always checking that content is fresh, the user always sees the most recent content (or stats in this case, as pages will change most often compared to images and such)
the other method actively tells the client that the specified content (depending which content this method is applied to) is "fresh" for a user-specified amount of time (there are various ways to do this, some are better than others) this enables the client to not have to keep checking content for freshenss (such as images which are unlikely to change very often at all) and will further reduce load and bandwidth, when one of the "expiration" conditions is met, the next time the content is requested by the user (who wants to view that page, or a page with that content (an image for example) the browser will send a conditional GET request to check if it's still fresh or not, this goes back to the first method, if it's still fresh then the server should send back a HTTP 304 and just the http headers, if not, it'll send a full (normal) HTTP 200 along with the content (page, image, whatever)
the first is best used for content that changes often, or the time it'll change is unknown (so that the client always checks)
the 2nd method is better for more static content, and/or large content, images are a prime example of both, where it's reasonably safe to have clients cache it without having to recheck, but if it does need to be changed, there are ways around the problem, which will make clients download a changed image, so if an image
needs to be changed (because it's important, rather than just an improvement, like a new logo or something) then it's still possible to "force" it out, and not have to wait a month or so
My main thinking behind the browser cache was that unless all the pages are kept in RAM, then each request will have some disk access and other overhead. I gather that processor/calculation speed is the main limitation, so it probably won't have much effect, but with all the page hits you get, I was reasoning it might do something?
absolutely agree on this one, i imagine the site is quite busy most of the time, and the reduction is load can be significant, especially as willy has said that CPU performance is the main problem
so this will help squeeze every spare cycle out (from the web front at least)
and incase i've put you off willy, don't worry, most of the calcualtion for what the values should be can be handled quite happily by the server, you just have to specify "parameters" sort of, so that it knows the rules for how to calculate
(such as the "expires" header, it uses an absolute date/time, but if you want your content to be "fresh" for a week, you don't need to change it every week, as long as the server is configured correctly the date value it'll send will be a week (or however long you want) from the time it served the content, but "expires" is old, and there are better methods available these days)