Mvc И Кэширование

Наверное многие знают, что такое MVC, если нет, то это вам поможет. Википедия .

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

Но теперь у меня возник вопрос, на который я надеюсь получить ответ от хабрапрограммистов: как реализовать кеширование при использовании MVC? Понятно, что модель умеет кэшировать промежуточные вычисления и запросы (если база данных этого не делает), некоторые данные.

Какой из трех компонентов должен отвечать за кеширование итогового html-кода? Идеальным случаем кэширования является следующий алгоритм: 1. Проверьте, актуальна ли версия в кеше 2. Если да, то верните его 3. Если нет, то получите данные из разных источников 4. Обработка данных 5. Создайте и запишите HTML в файловый кэш (или другое хранилище данных).

6. Верните окончательный HTML-код. Давайте посмотрим на несколько примеров: 1. Если кеширование выполняется представлением, то кешированный код передается браузеру, но модель все равно выполняется, поскольку он ничего о ней не знает. 2. Если в модели происходит кеширование, то получается путаница, потому что модель должна возвращать, образно говоря, массив данных, а не кусок html-кода.

3. А контролер исходя из своей роли вообще не должен этого делать.

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

Как в рамках MVC можно сделать так, чтобы конечный код блоков страниц кэшировался и модель не извлекала и обрабатывала данные для этого блока, а, естественно, делала это для остальных? УПД: Основная проблема заключается в необходимости найти творческие способы кэширования.

Это связано с тем, что есть готовый сайт (крупный региональный портал), код которого невозможно полностью переписать (по многим причинам).

К готовому функционалу необходимо добавить возможности кэширования.

Если бы не MVC, я бы сделал это за короткий промежуток времени.

Поэтому встал вопрос о реализации кэширования именно в архитектуре MVC. Жду вашего совета! Теги: #MVC #CMS #архитектура #программирование #вопрос #Чулан

Вместе с данным постом часто просматривают: