Whether it is "ethical" or not to do cache busting is another discussion.
In my opinion, the <link> html tag lacks of some kind of timestamp attribute that would indicate to the browser if it's necessary to request the CSS via HTTP.
I think this would be smoother for both the client and the developer.
Now I am a bit confused about what you are saying because that is a bit different to what I observed.
@Perlkonig:
A well behaving client will check the freshness of its cache periodically. A simple HEAD request will show that it has changed, and it will refresh it.
Are you talking about the browser here? I often see cases where the cache is not refreshed for several days.
@Perlkonig:
The client should have the right to choose how frequently to refresh their cache. And if they see the site isn’t looking right, they can Ctrl+F5 themselves and refresh it directly.
You also used "client" in this sentence, but I guess you refer to the user here. Well, I think that many users don't even know about "Ctrl+F5". And even if they know it, is it their role to investigate whether the styles look right or not? This is assuming they know how the styles should look... (Btw, I know users who would clear the whole cache of the browser, which in this case would certainly subvert the purpose of caching). I think it's fairly reasonable to assume that the developer, who edit the files, is the best placed to indicate when a new version is published. Of course this requires some self-discipline to do a proper versioning. On the other hand, the grav option “enable_asset_timestamp” is (in my opinion) not the good policy as it doesn't reflect the changes made on the files.
To go back to the original question: How can I solve the issue of the first post if the file "styles.123.css" doesn't exist physically?