Page cache works on local dev but not on production I've a Drupal 8.6.9 site running on Apache 2.4 and PHP 7.2. I've enabled the internal page cache, the dynamic page cache, and the BigPipe module in an effort to tease out some more performance. 

I've set max-age to 1 day, under /admin/config/development/performance.

On my local development site (drupalvm, Ubuntu 16.04) I can see X-Drupal-Cache: HIT and a visible improvement in performance, but on the hosting server, also Ubuntu 16.04, I only ever see X-Drupal-Cache: MISS.

As far as I can tell, there's nothing amiss in settings.php on the live server, the Drupal config is identical, so there must be something amiss in the Apache settings, perhaps.

Has anyone come across this before where cache works on one environment, but not another?
My guess is during your testing you're visiting the page for the first time which would result in a X-Drupal-Cache: MISS (As you'd expect)

And as you've got the max-age set to 1 day your browser has now cached that response so no matter how many page visits you do for the next day you'll always see the MISS for that page (Because your browsers not going back to your server to get a fresh response) So other future users/different browsers could potentially be getting a HIT response after you've now forced drupal to create its initial cache

I'm only guessing here as I haven't tried myself but would seem to make sense. You could test it out by opening the same page in a different browser after you've got the MISS on your first browser to see if that 2nd browser is now seeing HIT