Caching: Three main types of caching enable websites to operate efficiently: in memory data caches, local asset caches, and global asset caching. An in memory data cache (e.g. memcache for session state) is an optimum way to store state between HTTP requests, which in themselves are part of a stateless protocol. Next a local asset cache/proxy immediately in front of a website can store images and other static files for quick retrieval without the web servers having to process the associated requests; such tools include Stingray, Varnish, and Squid. Lastly a global asset cache (e.g. content delivery networks or CDNs such as Akamai, CDNetworks, Limelight, Fast.ly) will perform similar duties as the before mentioned local asset cache, but will store the cached files even closer to the end users. Additionally these global asset caches (CDNs) dynamically choose the best internet routes based on each users location.