In 2007 in a post called "Mastering The Back Button With Javascript" Patrick Hunlock claimed that just including an onbeforeunload
handler in a page will stop caching. (I guess browser caching.) He was very emphatic about it:
Just having an unbeforeunload event handler -- regardless of whether or not it actually does anything, regardless of whether or not you spawn a dialog box or not, even if the entire function declaration consists entirely of just { } -- just defining an event handler will prevent the page from being cached -- ever.
As a matter of fact, even if you allow page caching, the page will be not be cached. Having an onbeforeunload event means the page will be re-built every single time it is accessed. Javascripts will re-run, server-side scripts will be re-run, the page will be built as if the user was hitting it for the very first time, even if the user got to the page just by hitting the back or forward button.
Funny thing is I can't find any mention anywhere else of this, apart from one or two people who refer to Hunlock's post. Can anyone clear up this question? Is it really true, or can I safely use that event?