Служба WCF может использовать в заголовке HTTP директивы Cache-Control , чтобы сообщить клиенту как , что она должна использовать кэш на стороне клиента. Есть много опций, которые являются частью протокола HTTP . Таким образом, вы можете, например, определить, как долго клиент может просто получать данные из локального кэша, а не отправлять запросы на сервер. Все клиенты, использующие HTTP, как и все веб-браузеры, будут следовать инструкциям. Если ваш клиент использует ajax
запросы к серверу WCF, то соответствующий вызов ajax
просто возвращает данные из локального кэша.
Кроме того, можно реализовать много интересных сценариев кэширования. Например, если для параметра «Cache-Control» установлено значение «max-age = 0» (см. здесь пример), то клиент всегда будет выполнять повторную проверку кэша сервером , Обычно сервер отправляет в заголовок так называемый «ETag» вместе с данными. «ETag» представляет хеш MD5 или любую другую свободную информацию, которая будет изменена при изменении данных. Клиент автоматически отправляет "ETag", полученный ранее с сервера, вместе в заголовке запроса GET на сервер. Сервер может ответить специальным ответом HTTP/1.1 304 Not Modified
(вместо типичного ответа HTTP/1.1 200 OK
) и , когда тело не имеет данных . В случае, если клиент будет безопасно получать данные из локального кэша.
Я использую «Cache-Control: max-age = 0» дополнительно с Cache-Control: private
, который отключает кэширование данных на прокси-сервере и объявляет, что данные могут кэшироваться, но не передаваться другим пользователям.
Если вы хотите узнать больше об управлении кэшированием в отношении заголовков HTTP, я рекомендую вам прочитать следующее Руководство по кэшированию .
ОБНОВЛЕНО : Если вы хотите реализовать какое-либо общее кэширование, вы можете использовать Microsoft Enterprise Library , которая содержит Блок кэширования приложения . Библиотека Microsoft Enterprise публикуется в CodePlex с исходным кодом . В качестве альтернативы .NET 4.0 вы можете использовать System.Runtime.Caching . Его можно использовать не только в ASP.NET (см. здесь )
Я продолжаю рекомендовать вам использовать HTTP-привязку с HTTP-кэшированием, если это возможно только в вашей среде. Таким образом, вы можете сэкономить много времени на разработку и получить в конце более простое, масштабируемое и эффективное приложение. Поскольку HTTP так важен, в нем реализовано уже так много полезных вещей, которые вы можете использовать «из коробки». Кэширование - только одна из возможностей.