How to force flush CSS cache on client side?
One way of dealing with this is enabling merging of CSS. Then you could just clear the cache and a new merged file would be created with a new file name.
System -> Configuration -> Developer -> CSS settings -> Merge CSS Files
As far as I know, the hash code of the merged CSS file stays the same even if the underlying files changed - only if new files are added to the set of merged files, the hash changes. -- @Alex
Another way of dealing with this is instead of using the layout.xml,
just put them in your
page/html/head.phtml
Or create a block that contains a <style>
tag with version number and put it in the XML in your head so you can have it load on only specific pages and still sticking to using the XML layouts.
You can use the OpenSource Module Aoe_JsCssTstamp which adds timestamp information to the merged CSS files. Timestamps for plain (un-merged) CSS files are not yet supported however but this would be easy to implement.
I use my own extension Speedster Advanced for this. But the basic principle is that the name of the merged css and js files includes the timestamp of the last modified file - see Mage_Core_Model_Design_Package::getMergedCssUrl()
. Any time you edit any of the css files a new file name is created causing browsers to request the new file instead of reusing the cached version. Since your head block might be cached a Magento cache refresh is needed.