Наш сценарий использования для кэширования приведен ниже:
- Мы хотим ускорить работу нашего веб-приложения за счет кэширования часто используемых данных SQL Azure.
- Кэш должен быть включен простым редактированием конфигурации NHibernate (как и любой другой кэш NHibernate L2).
- Когда выполняется обновление одного из этих объектов в экземпляре роли Azure, это изменение должно немедленно распространяться на другие экземпляры Azure.
- Мы хотели бы избежать хлопот, связанных с настройкой и управлением чем-то вроде memcached.
К сожалению, текущее состояние Azure AppFabric Cache не соответствует нашим потребностям. И вот почему:
После настройки провайдера NHibernate Velocity мы смогли кешировать объекты в распределенном кеше, но была небольшая задержка (~ 1 секунда) при доступе к каждому объекту. Поскольку мы пытались получить доступ к сотням кэшированных объектов на каждый веб-запрос, каждый HTTP-запрос был на самом деле медленнее, чем если бы мы обращались к БД напрямую - конечно, не то, что мы искали.
Мы попытались решить эту проблему, включив локальный кэш AppFabric. Производительность была значительно улучшена, но это подняло еще одну проблему. Как только объект сохранен в локальном кэше, он будет оставаться там до истечения срока его действия (вы можете установить временной интервал истечения для кэша). На данный момент нет большой разницы между локальным кешем AppFabric и провайдером NHibernate SysCache (который использует кэш ASP.NET), за исключением того, что вам приходится доплачивать за кеш AppFabric.
Если бы локальный кэш Azure AppFabric поддерживал такие уведомления, как двоюродный брат Windows Server AppFabric , мы бы с радостью использовали кэш Azure. Пожалуйста, проголосуйте за эту функцию на www.mygreatwindowsazureidea.com .
Для справки сотрудник опубликовал вопрос на форумах Azure относительно использования локального кэша AppFabric.
Если кто-нибудь обнаружит, что MS включила уведомления локального кэша в Azure, , пожалуйста, отправьте ответ на мой оригинальный вопрос .