Improve caching: separate data and HTML