The W3.org Protocol says
By default, a response is cacheable if the requirements of the request
method, request header fields, and the response status indicate that
it is cacheable
When they say “a response” does that mean that everything is caching all the time? So when I use Cache-Control: no-cache will that stop the page from caching? And will that have any ill effect in future?
Generally, you’ll want to prevent caching when old (even a few seconds old!) pages are likely to be stale. The longer you expect a page’s content to be relevant, the more good caching does (and the less it gets in the way). Conversely, the shorter the information’s shelf life, the more likely that caching will actually get in the way and keep people from getting the most up-to-date content.
The cost of prohibiting caching, of course, is that you don’t get the benefits of caching. Every hit to the page will generate a request to your server, even if you’re just serving the same page all the time. That could mean a significant increase in server load, which a big site (or a rinky-dink web server) would find undesirable. So in order to answer the question, “To cache or not to cache?”, you’ll need to balance your bandwidth and server capabilities (and your willingness to potentially max them out) against the requirement that you have the absolute freshest bits. If you don’t have such a requirement, then
no-cachemight be overkill.As for future effects? The only real issue is that caching is still happening to some degree til all the cached copies expire. Once that happens, there’s no real issue. You’re not prevented from reenabling caching later. In fact, if you do reenable it, proxies would see the change pretty quickly, and start caching the page again the next time someone requests it.