An immediate thought on this- would be proxies. So it is no good relying on clearing the cache in the local browser, if it is being served a cached version from an upstream proxy server.
It is clearly a problem that needs addressing though. In our web app we have added build steps that seek out all css/js/image links and append version numbers as a query string to defeat the cache.
This works quite well, but has the disadvantage of always clearing the cache for each new release, when in reality not all items need to be cleared.
Yes, I also mentioned proxies like varnish and squid, but problem is they still require a HTTP request. It would be nice if there was an API which enables us to use pure client-side cache invalidation without any extra calls.
My point is- that there may be a proxy server outside your control which is caching the content (e.g. inside a corporate network).
Unless you can invalidate the cache here as well, then clearing it in the browser is no good (I suppose you could set your cache headers to disable caching on intermediate proxy servers)
It is clearly a problem that needs addressing though. In our web app we have added build steps that seek out all css/js/image links and append version numbers as a query string to defeat the cache.
This works quite well, but has the disadvantage of always clearing the cache for each new release, when in reality not all items need to be cleared.