This test in CachedResourceLoader::determineRevalidationPolicy() // Avoid loading the same resource multiple times for a single document, even if the cache policies would tell us to. if (m_validatedURLs.contains(existingResource->url())) return Use; means that we never revalidate a resource for a given document (except if it has Cache-control:no-store which is handled separately), no matter how expired it is. While we don't want to load a resource multiple times during a page load we should probably allow revalidation for resources that are requested by a script after the page load has completed. This might be achieved simply be clearing (and not adding to it afterwards) m_validatedURLs when the page load completes. It would also be good to figure out what exactly other browsers do here before making any changes.
Note that the current behavior has been in WebKit for a very long time so we are unlikely to fix any web sites by changing this. However it might allow better performance in some cases (since web sites could revalidate their resources instead on full reload forced by no-store). This is probably also required if we want to have XHR in the memory cache.
See also: bug 51286 and bug 26226.
*** Bug 66020 has been marked as a duplicate of this bug. ***
Per bug 66020, this is affecting Google Docs.
Created attachment 103811 [details] Patch
Comment on attachment 103811 [details] Patch r=me
Comment on attachment 103811 [details] Patch Clearing flags on attachment: 103811 Committed r93326: <http://trac.webkit.org/changeset/93326>
All reviewed patches have been landed. Closing bug.
This patch has broken MobileMe galleries, see bug 68682.