api caching and etags