Лично я хотел бы, чтобы мои службы WCF были готовы к сеансу и сохраняли свои кеши в сеансе.Компромисс всегда находится между тем, насколько статичны данные, и тем, сколько данных необходимо извлечь.
Для очень статичных данных я могу кешировать длину сеанса или пока данные не изменились(определение, изменил ли другой пользователь кэшированные данные моего сеанса, - это другая история).Для очень динамических данных мне трудно доверять моему кешу дольше, чем несколько минут (что все еще не совсем безопасно).
Вопрос, однако, заключается в том, говорите ли вы о кэшировании на стороне клиента или кэшировании на стороне сервера?Это означает, что вы пытаетесь кэшировать наборы данных на клиенте или просто кэшировать на веб-сервере, который извлек набор данных с сервера базы данных?
Если вы говорите о кэшировании клиента, то вы можете кэшировать файлы cookie,кэшируйте переменные javascript, используйте http-кэширование или вышеупомянутый механизм кэширования приложений HTML 5.
Это все о подходящем инструменте для работы, хотя в этом случае молотка нет;)