add a server side cache to the frontend, e.g. Redis
add a server side cache to the cms
add a cdn which supports http caching
move db closer to / into the app (or rather copies of the data, like the Remix website does)
Considerations:
if Fly app stays configured to sleep when inactive (and as long as we don't have enough traffic), a CDN would have the advantage that there is never a delay when accessing the website
consider Remix features like returning a promise from a loader to load secondary data in the background
Ideas:
Considerations: