I noticed something weird on my ownCloud instances which was the fact that for one JS named core/js/oc.js the expires header was wrong and would never be cached on the browser side.
After checking I also noticed it was the case on the official demo.
So I searched and found out it was harcoded in core/js/config.php at line 45/46:
// Disallow caching \header("Cache-Control: no-cache, must-revalidate"); \header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
I don’t understand why it’s done this way since there is also a query parameter.