• Microsoft .NET
  • ASP.NET
  • Создание веб-сайта при помощи ASP.NET 2.0 и каскадной таблицы стилей (CSS)

Изучение кэширования в ASP.NET - Зависимость кэша

ОГЛАВЛЕНИЕ

Зависимость кэша

Используя зависимость кэша, можно установить зависимость кэша от каких-либо данных или сущности, способных измениться. Можно установить зависимость кэша, по которой можно обновить/удалить кэш. ASP.NET поддерживает три типа зависимости:
•    Зависимость на базе файла
•    Зависимость на базе ключа
•    Зависимость на базе времени

Зависимость на базе файла: Зависимость на базе файла делает недействительным конкретный элемент кэша, когда меняется файл(ы) на диске.

Используя зависимость кэша, можно заставить ASP.NET удалить кэшированные элементы данных из кэша при изменении файла зависимости. Можно установить зависимость для нескольких файлов. В таких случаях зависимость строится из массива файлов или каталогов.

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

Зависимость на базе ключа: Зависимость на базе ключа делает недействительным конкретный элемент кэша, когда меняется другой элемент кэша.

Применение: Полезна, когда в кэше есть несколько взаимосвязанных объектов, и если один из объектов меняется, надо обновить или удалить их все.

Зависимость на базе времени: Зависимость на базе времени заставляет элемент истечь в заданное время. Метод Cache.Insert() класса Cache используется для создания зависимости на базе времени. Доступны два типа зависимости на базе времени.
•    Абсолютная
•    Скользящая

Абсолютная: Устанавливает абсолютное время истечения элемента кэша. Абсолютные истечения задаются в формате полного времени (чч:мм:сс). Объект будет удален из кэша в заданное время.

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

Помимо перечисленных зависимостей, ASP.NET позволяет следующее:

Автоматическое истечение: Мало используемые элементы кэша без зависимостей автоматически истекают.

Поддержка обратного вызова: Объект кэша можно сконфигурировать на вызов конкретного фрагмента кода, который будет исполняться при удалении элемента из кэша. Это дает возможность обновить кэш. Можно использовать OnRemoveCallback().

Принципы кэширования

Принципы кэширования вывода
1.    Активировать кэширование вывода на страницу, к которой часто обращаются и которая возвращает абсолютно такое же содержимое для всех обращений.
2.    При активации кэширования вывода для страницы ни в коем случае не вводите неправильное поведение и/или отображение для любого конкретного клиента.
3.    Аккуратно определите длительность кэшированной страницы, чтобы уравновесить скорость доступа (пропускную способность) с потреблением памяти и правильностью согласованности кэша.
4.    Активируйте скользящее истечение на странице, если придется использовать VaryByParam='*'.

Принципы кэширования данных

1.    Кэш данных не является вместилищем для разделяемого корректируемого состояния.
2.    Кэшируйте данные, к которым часто обращаются, и получение которых относительно затратно.
3.    Если данные зависят от файла, каталога или другой записи кэша, используйте CacheDependency для обеспечения актуальности данных.

Рекомендуемые применения типов кэширования

Ситуация

Рекомендуемый тип кэширования

Генерируемаястраницавосновномнеменяется, нонесколькопоказываемыхввыводестраницрегулярно меняются.

Использовать кэширование фрагмента.

Генерируемаястраница постоянно меняется, но есть несколько объектов, меняющихся реже.

Использовать кэширование данных для объектов.

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

Использовать кэширование вывода и установить длительность, равняющуюся частоте изменений данных.

Ссылки

•    MSDN ссылка 1
•    MSDN ссылка 2
•    Книга: Основы ASP.NET с примерами на C# от Фрица Аньена