Совместное кэширование
Несколько территориально распределенных кэш-серверов могут объединяться и функционировать совместно. Например, локальный кэш-сервер организации можно настроить таким образом, чтобы он в случае необходимости перенаправлял запросы кэш-серверу магистрального Интернет-провайдера. Это обеспечит двухступенчатый кэш-поиск, причем обращение к серверу-источнику будет производиться только в том случае, если требуемоый объект не обнаружится ни на одном из кэш-серверов.
Если объект будет найден на магистральном кэш-сервере, последний передаст его пользователю через локальный кэш-сервер, который сохранит копию объекта на своем дисковом пространстве. Достоинством кэша высокого уровня является большее количество пользователей, а следовательно, большее количество хранящихся в кэше объектов и соответствующее повышение скорости их обнаружения.
Примером системы совместного кэширования является служба JWCS (Janet Web Caching Service — служба web-кэширования Жанет), разработанная для научных организаций Великобритании. Более 200 локальных кэш-серверов научных организаций направляют свои запросы национальному кэш-серверу, обрабатывающему около 100 миллионов транзакций в день. Взаимодействие внутри системы осуществляется при помощи протоколов HTTP и ICP (Internet Caching Protocol — протокол Интернет-кэширования). ICP представляет собой протокол прикладного уровня, описанный в документе RFC 2186 и позволяющий кэш-серверу обратиться к другому кэш-серверу для быстрого поиска требуемого объекта. При наличии искомого объекта осуществляется его передача по протоколу HTTP.
Протокол ICP активно используется в системах совместного кэширования и поддерживается бесплатно распространяемым популярным приложением для кэш-серверов Squid.
Альтернативным вариантом систем совместного кэширования являются кластеры кэшей, как правило, расположенные внутри одной локальной сети. Объединение отдельных кэшей в кластеры обусловливается тем, что первые не всегда имеют накопители информации достаточного объема или не способны обеспечить обработку трафика. Однако, решая проблему недостаточной мощности отдельных кэш-серверов, кластерная система порождает проблему выбора: какому из кэшей кластера следует направлять запрос объекта. Эта проблема решается путем маршрутизации с использованием хеш-функций. В наиболее простой форме подобной маршрутизации браузер выполняет хэширование URL-адреса запрашиваемого объекта и на основе полученного результата формирует запрос с адресом соответствующего кэш-сервера. Поскольку все браузеры используют одну и ту же хэш-функцию, объект никогда не будет содержаться более чем в одном кэше кластера, и при наличии объекта в кластере браузер сможет однозначно определить, в каком именно кэше находится объект. Маршрутизация с помощью хэш-функций лежит в основе протокола маршрутизации кэш-массива (Cache Array Routing Protocol, CARP), используемого в поддерживающих кэширование продуктах компаний Microsoft и Netscape.