Продолжается подписка на наши издания! Вы не забыли подписаться?

Кэширование в ASP.NET

Игорь Шапошников

Кэширование: как и зачем

Помните шутливую расшифровку аббревиатуры WWW? Это World Wide Wait. Увы, далеко не все имеют хороший канал, и пользователи достаточно часто раздражаются, ожидая окончания загрузки web-страниц. К сожалению, разработчики не в силах улучшить пропускные возможности каналов пользователей или кардинально уменьшить размеры Web-страниц. Однако некоторая возможность сократить время загрузки Web-страниц все же есть. Я, конечно, говорю о кэшировании.

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

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

Управление кэшированием на стороне клиента

В ASP.NET в состав объекта HttpResponse был введен еще один дополнительный объект с наименованием Cache. Он реализуется при помощи класса HttpCachePolicy. И этот объект предоставляет разработчику поистине беспрецедентный объем возможностей. Рассмотрим методы и свойства данного класса.

Итак, в этом разделе мы рассмотрели использование объекта Cache, входящего в состав объекта HttpResponse. Впрочем, все вышесказанное относится лишь к кэшированию страниц на стороне клиента. Чтобы использовать этот механизм, необходимо быть уверенным, что в течение времени хранения web-страницы в кэше, она не будет изменена. То есть, требуется некоторая статичность ресурса. А если разработчик создает сайт с использованием технологии ASP.NET, трудно предположить, что в его состав будет входить так уж много статичных страниц. Однако это еще не повод отказываться от кэширования. Просто надо использовать другую его ипостась — кэширование на стороне сервера.

Кэширование страниц на сервере

Web-страницы могут кэшироваться и на сервере. Это необходимо для того, чтобы снизить нагрузку на него и уменьшить время отклика сервера на запрос пользователя. Скажем, пользователи часто запрашивают некий набор данных из БД. А сама БД меняется достаточно редко. Следовательно, нет нужды постоянно генерировать свежую версию страницы, отображающей этот набор данных, ее можно просто хранить в кэше сервера. Это, несомненно, можно считать экономией времени, которая будет особенно хорошо проявляться в моменты пиковой загрузки сервера. Однако, здесь тоже есть свои подводные камни...

<...>

Заключение

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

Прочитать статью полностью вы можете в печатной версии журнала

Copyright © 1994-2016 ООО "К-Пресс"