2014-02-12 3 views
1

Друг и я разрабатываем веб-приложение с использованием ASP.NET MVC 4 и EntityFramework 6. Мы внедрили шаблон хранилища и, конечно же, Entity Framework Context инициализируется и удаляется каждый раз, когда пользователь делает запрос на доступ к данным в базе данных, поэтому кеширование системного объекта Framework первого уровня не используется.asp.net mvc 4 cache vs entityframework 6 cache

Я хочу реализовать кэширование второго уровня в Entity Framework, но он говорит, что нет необходимости, чтобы мы могли использовать кэш ASP.NET. Мой вопрос:

Когда использовать каждый тип кеша?

Как быстро друг друга?

ответ

3

Когда использовать каждый тип кеша?

Существуют другие шаблоны улучшения производительности, чем написание собственного поставщика EF, что необходимо сделать для реализации кеша второго уровня. Мой совет (и это все, что есть, совет) - никогда не использовать кеш второго уровня EF.

Получение права кеширования очень сложно, особенно недействительность кэша.

Если ваша конечная цель - быстро доставить веб-страницы, кеш asp.net (или OutputCache) является одним из способов достижения этого. Однако тогда вам нужно выбрать, когда делать недействительным кеш, что снова может быть затруднено.

как быстро друг друга?

Кэши обычно хранят данные в ОЗУ, поскольку это самый быстрый способ получить данные физически. Однако в конечном счете скорость будет зависеть. Какой провайдер кеша вы используете? Разве ваша балансировка нагрузки сбалансирована, и если да, то они имеют один и тот же кеш? Как они к нему обращаются? Когда вы имеете дело с Интернетом, вы должны учитывать, что данные будут проходить по сети, поэтому есть все те проблемы с задержкой, которые также играют роль (полезная нагрузка/размер, хмель и т. Д.)

Если производительность действительно является проблемой, вы можете захотеть взглянуть на шаблоны, которые используют такие инструменты, как redis или другие поставщики nosql, для хранения предварительно вычисленных денормализованных наборов ваших данных для более быстрого доступа. Вы также можете выйти за пределы EF и создать пользовательский sql для точек доступа к данным, которые дают вам определенные проблемы с производительностью.

Я действительно не думаю, что вы получите какие-либо другие ответы, которые не говорят «это зависит» так или иначе.

+0

+1, я знаю, что этот вопрос основан на многих факторах, но всегда хорошо читать другие мнения – emcas88