caching is server-y stuff. Your hosting server sends out response headers which can say things like telling the browser whether or not to cache things, if so for how long, is there an expiry date on that, and cookie stuff.
I see you’ve got the following heading:
This tells proxies not to cache, but doesn’t say anything to the browser about not caching. Most browsers want to cache if they can, and it looks like your page isn’t giving them any guidance.
You could instead set that heading to
Cache-control: no-store, no-cache, private
(I have no idea if you use proxies so I’m assuming you want to keep “private”)
Thing is, you probably want people to cache stuff most of the time, just not when you get some developer to make a major change. So Sam didn’t say anything about changing your HTTP headings, and now that I’ve had some coffee I think Sam’s is the better approach and you should leave your headings as they are, but I wanted you to know it’s a thing.
What Sam’s suggesting is sometimes called fingerprinting-- the name of your CSS and/or JS files get some extra blah-blah-blah tacked onto the end of their names, which does nothing more than make the browser think it’s seeing a brand-new file (well, I guess it is, lol).
Since you’re using Wordpress and are not yourself a developer, apparently in teh wordpress world everything and I mean EVERYTHING can be done with a plugin.
Someone made a plugin that can do this fingerprinting for you, called “Busted” (for cache-busting). https://technumero.com/css-changes-not-showing-up-in-wordpress-cache-busting-css/
But in the meantime, you’d have to know which CSS files and any other files your developer edited, since I’m assuming that if you added the Busted plugin, it would start out with no fingerprinting as all your files right now would be fresh to it (who knows, maybe it has an option to go ahead and change the names of your files anyway).