Throwback for HFS 2.3 has used headers like these: 
main
{.add header|Cache-Control: public, max-age=200.} and this <meta http-equiv=CACHE-CONTROL content=PUBLIC>
error messages and upload
{.add header|Cache-Control: no-cache, max-age=0.} and this <meta http-equiv=CACHE-CONTROL content=no-Cache>
See how they are equal yet opposite?  The 'mirror image' commands are necessary for the countermand/override concept to work.  
This is more common with style = old-way; new-way, and in that order; so, the browser gets as far as it can go.  The concept is actually the same. 
For HFS2.4 there was slight difficulty in caching main page and then not caching login-name (some odd battle).   And, I know that those meta tags aren't right for XHTML nor HTML5 (those metas need a wee update).  Also there is no </meta> thus no /> because meta are not closable. 
I got the caching to work for HFS2.4 with some experiments.  Somehow, the old style %login-link%%loggedin%%upload-link% was resistant to caching (some difference), so, it didn't cache wrong login data.  Would be nice if I had done that on purpose.  Unfortunately, I don't know how to repeat that yet.  Will investigate. 
Usually there is no problem, with turning caching on--the problem is turning it off, such as for new folder (make it show) and login name (change when login) because the file-list page which should be cached (for a couple of minutes), also should change if new folder or login difference.  Very puzzling!  
I can report that caching headers work and that the problem of mixed data-to-cache + data-not-to-cache on the same page is not specific to HFS.