Serve custom domains with caching: Part 1 - Overview & Architecture