Есть ли причина, по которой я не должен кэшировать в nHibernate? - PullRequest
3 голосов
/ 16 марта 2011

Я только что обнаружил радость Cache.ReadWrite() в беглом nHibernate и тщательно анализировал результаты с nhprof.

Это кажется довольно полезным, но это кажется немного обманчивым.Есть ли какая-то особая причина, по которой я не хотел бы хотеть кэшировать очень часто используемый объект из запроса?Я имею в виду, я должен предположить, что я не должен просто украшать каждое отображение с помощью свойства Cache ... или я должен?

1 Ответ

2 голосов
/ 16 марта 2011

Как обычно, это зависит от:)

Если что-то может быть обновлено фоновыми процессами, которые не используют кэш второго уровня, или изменены непосредственно в базе данных, кэширование вызовет проблемы.

Объекты, к которым редко обращаются, также не могут быть хорошими кандидатами для кэширования второго уровня, так как они просто занимают место.

Кроме того, вы можете увидеть некоторые странности, если у вас есть коллекции, отображенные как Inverse- изменения не будут правильно восприняты кэшем второго уровня, и вам нужно будет вручную удалить коллекцию.

Как указывает sJhonny ниже, если у вас есть сценарий веб-фермы (или любой другой, где ваше приложение)работает на нескольких серверах) вам нужно использовать распределенный кеш (например, memcached) вместо встроенного кеша ASP.net.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...