2012-07-04 3 views
0

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

Я должен реализовать его на уровне доступа к данным или модели. Я использую ASP.NET MVC. Благодарю.

+0

Как реализован ваш уровень доступа к данным? Является ли это ORM или он закодирован вручную? –

+0

Что вы кешируете? Как часто он запрашивается? Сколько его вариантов? Насколько оно большое? Сколько одновременных пользователей? Как долго вы можете хранить «устаревшие» данные? Почему вы хотите кэшировать ваш уровень доступа к данным? –

+0

Кэширование только данных в реальном времени. –

ответ

2

Там может быть 2 уровня кэширования в веб-приложения:

  1. Кэширование целые действия или фрагменты HTML
  2. результата Кэширование объектов от операций доступа к данным

Первый сценарий достигается путем украшения действий/дочерних действий с помощью атрибута [OutputCache].

Второй более мелкозернистый, и это будет зависеть от вашей установки. Например, если вы используете ORM, например NHibernate, возможно, ваш ORM уже поддерживает кеширование. Например, NHibernate поддерживает кеш второго уровня, который может быть даже экстернализирован с использованием поставщиков кэширования. Поэтому, если вы используете ORM-головку для документации вашего ORM, чтобы узнать, поддерживает ли она такие функции кеширования.

Если ваш ORM не поддерживает кеширование, или вы вообще не используете ORM, вы можете сами создать кеширование. Это может быть достигнуто на вашем уровне обслуживания, где вы могли бы добавить некоторого поставщика кэша в качестве зависимости, а когда ваша служба запрашивает ваши репозитории, кешируйте результаты, возвращаемые этими репозиториями, используя поставщика.

Смежные вопросы