On Thu, 14 Apr 2005 15:23:10 +0200, Karoly Negyesi <karoly@negyesi.net> wrote:
I just chatted with an Opera person who fixed my Opera via VNC. I asked about caching woes. He pointed me that I could configure my Opera so it always checks for fresh pages (it only checks whether there is something new, so it's not THAT big a problem). I asked whether we could omit some headers so that Opera won't cache the page (like node edit page):
"Once we didn't cache pages if the http headers told opera not to cache the page, but as many webservers are configured to set those headers without any good reason we had to remove that again. Many forums and dynamic pages send that header which made opera reload the page everytime. and _many_ users complained, so we disabled this behaviour for unsecure sites.
[...]
So here you are. This is the latest, official word.
Well, I guess I'll update it a bit, then. Here's how Opera works, as far as I could understand the implementor: 1) Cache directives in META elements are ignored 2) The Cache-Control directives have the following meanings: 2a) if there's no "Cache-Control" header, cache the page to disk and use internal heuristics: 2a1) if it's a query URL (contains a "?"), treat as 'Cache-Control: no-cache', otherwise 2ab) use user settings 2b) no-cache -> revalidate, expires according to user settings 2b1) private, no-cache -> expire immediately 2c) no-store -> cache to RAM only (no effect on revalidation), expires according to user settings or when closing the program 2d) max-age -> expire page after set age 2e) must-revalidate -> treated as if no "Cache-Control" header was sent* 2f) everything else -> treated as if no "Cache-Control" header was sent When loading a page that we will later revalidate, we store the "Last-Modified" or "Etag" header. When revalidating, we send an "If-Modified-Since" header and respect the result from the server (either a 304 or 200 response header, IINM). See RFC 2616 for some more details about caching. So, if you want pages to be updated cross-browser, it's probably best to send a "Cache-control: no-cache" header along with either "Last-Modified" or "ETag". This is the latest, official word. ;) * This is probably what the person you talked to (Lars?) was referring to. In Opera 7.54, we started respecting this, much to our users' chagrin. In 7.54u2, we ignore it again. -- Tim Altman Core QA Opera Software