Interesting article. But as far as I can tell the cache you've implemented only lasts as long as the user stays on your page.
What I do is set the 'Expires' or 'Max-Age' on the AJAX response from the server, and let the browser cache the data for me. This lets the server decide how long the data is good for, and the cache persists between page visits, browser restarts, etc.
I think you could also do useful things with AJAX caching by setting request headers like 'If-Modified-Since' and reading the 'Expires' and 'Max-Age' response headers using the XMLHttpRequest object.
That's a great server-side caching strategy. I wonder how consistent across-the-board the browsers are in reading HTTP/1.1, caching related response headers. (As you pointed out, some of these inconsistencies could be dealt with by reading the headers directly from the XMLHttpRequest object.) That would make a really useful follow-up article!
RE: Server-side caching:
Setting the caching directives on the response works well with caching everywhere, from the server, to intermediate caches, to the browser cache. And it works very well with AJAX using the GET method.
RE: Browser caching inconsistencies:
If I remember correctly, Mozilla and Internet Explorer behave differently on a page reload. One reloads the AJAX-served content, the other still reads it from the cache.
I believe they behave differently also in the case where there are no caching directives in the response header.
RE: Follow-up article:
I would be happy to write one, concerning this or a myriad of other AJAX topics.