Add asset caching and if-modified-since support