What is the correct way to handle caching with custom modules?
In your page controller for /bookings, set a cache tag in the build array:

$build['#cache'] = [
  'tags' =&gt; [
    'booking_page_settings',
  ],
];


Or since it's a form:

$form['#cache'] = [
  'tags' =&gt; [
    'booking_page_settings',
  ],
];


Then when you submit the admin form that has the settings for the page, invalidate the tag:

Cache::invalidateTags(['booking_page_settings']);


You can also add to your cache tags the nodes that display on your booking page, such as 'node:123', or you can add 'node_list' to invalidate the caching when any node is updated.