Leap day post!

The xulrunner app I developed hits a web server running on localhost to serve up its main interface, via XUL’s <browser> tag (similar to HTML’s IFRAME tag). There are instances where the pages & their dependencies should not be cached. Adding the various HTML <meta> tags (expires, pragma, cache-control) prevents the HTML pages from caching, but we really wanted to prevent .js files from being cached since we change the content dynamically in some of them so we didn’t want to return stale data. If we were running Apache, we could just set some HTTP expires headers via mod_expires but since we needed to keep the app installer as small as possible, we were using a much more lightweight web server.

I first tried the following xul prefs:

pref(“nglayout.debug.disable_xul_cache”, true);
pref(“nglayout.debug.disable_xul_fastload”, true);

which didn’t work. I was seeing .js files being saved to xulrunner’s cache (on WinXP, it was in the C:\Documents and Settings\[User name]\Local Settings\Application Data\[App Vendor]\[App Name]\Profiles\* folder)

Then it dawned on me that since we were using the XUL <browser> tag, it essentially loads up a web browser to display the content. Since that meant it was essentially Firefox 2 loading up, I looked in Firefox’s about:config for caching-related preferences and voila:

pref(“browser.cache.disk.enable”, false);

I added that to xulrunner’s prefs.js & no more caching