What is Caching?
Caching refers to the short-term storage of files, such as images and web pages, so that the same files don't have to be loaded every time a page is viewed. This typically speeds up the experience for the user as it reduces the amount of data that has to be loaded. Caching can happen in many places. For example, your web browser can cache files so it doesn't have to download every file on a page all over again if you have visited that page before.
A Content Delivery Network (CDN) such as Cloudflare will also cache files on a larger scale, so that after a file has been accessed on behalf of one user, the same file can be stored on their servers for other users too, without having to make additional requests to the origin server. By caching this way, CDNs can reduce the time it takes to provide a cached file to the user.
Caching, Cloudflare, and CSS
One potential issue with caching is that it can lead to a situation where changes to a site may not be immediately visible to the site's visitors. This can happen whether the site has been cached by a web browser or by a server.
Although there are normally safeguards in place to prevent caching from becoming problematic, this can be a particular issue with cascading style sheets (CSS). If you're using Cloudflare with your site, they will cache your CSS for a long time. This means that if you make changes to your CSS, it will take a while before seeing them on the live site.
CSS Caching Solution
This can be solved by altering the reference to your CSS file in the HTML for the given page so that a novel query string is added - for example, altering "example.css" to "example.css?v=2.2.2". This typically causes both CDNs and web browsers to behave as though it's a new file that they haven't downloaded before - even if they have.
In the example given, Cloudflare will hold its usual request to "example.css" (the same file that it has always been using), and will instead make a completely new request to the origin server to get the latest copy of the file.
The origin server will ignore the query string "?v=2.2.2", but will nevertheless provide the latest version of the file. The next time "example.css" is updated, this can be changed to "example.css?v=2.2.3" - or to any number you prefer - so that Cloudflare will once again obtain the latest version.