Normally, a branch or remote office location requests content from a principal data center, which delivers the requested data across a WAN, such as the Internet. However, repetitive requests results in repetitive traffic, which can consume valuable WAN bandwidth unnecessarily. BranchCache stores copies of content from the central data center or cloud providers, effectively caching that content at the remote location. The cached content is either stored on remote servers or endpoint systems.
When other systems from the same branch make an identical content request across the WAN to the principal data center, they receive information indicating the local location of the cached data -- the remote systems can then contact the local system containing the cached data and retrieve the content locally. This improves utilization of the WAN because once content is cached to a local system, it can be accessed again from a local system without travelling across the WAN again.
When the main data center sends information about the location of a cache, it also includes hashing data. If the content has changed since the cache was created, the hashes will not match, and the remote location can retrieve a current version of the content, which is cached again for subsequent local use.
BranchCache operates in distributed and hosted cache modes. In distributed cache mode, the remote cache can be distributed among endpoint systems in the branch office (no server is needed). In hosted cache mode, the remote cache is maintained on servers in the branch office dedicated to that task. Although an organization can use both modes, they cannot be used simultaneously in the same branch office. For example, one branch can use hosted cache and another branch can use distributed cache, but a branch office cannot use hosted and distributed cache at the same time.
BranchCache was introduced with Windows Server 2008 R2 and Windows 7, and was updated to improve performance, scalability, management and resilience in Windows Server 2012 and Windows 8 operating systems.