Современные информационные технологии/3.Программное обеспечение

 

Кулик А.А.

Хмельницький національний університет, Україна

Аналіз можливостей механізму кешування в технології ASP.NET 2.0

 

В якості одного із рішень проблем оптимізації роботи із веб-сторінками технологія ASP.NET 2.0 підтримує механізм кешування. Механізм кешування дозволяє підвищити швидкість реакції веб-додатку у відповідь на дії клієнта. Технологія ASP.NET 2.0 підтримує наступні типи механізму кешування:

1.     Кешування результуючої сторінки (page output caching).

2.     Часткове кешування сторінки (partial page caching).

3.     Кешування джерела даних (datasource caching).

4.     Кешування даних (data caching).

Кешування результуючої сторінки дозволяє зберігати представлення цілої сторінки у пам'яті. Представлення сторінки формується на основі інформації запиту клієнта. Такий підхід вимагає формування об'єкту кешу для кожної сторінки окремо в рамках контексту. Це означає, що для різних клієнтів в пам'яті буде збережена окрема копія представлення однієї і тієї ж сторінки. Для включення кешування на сторінці ASP.NET 2.0 потрібно використовувати наступний декларативний опис на початку файлу ASPX: <%@ OutputCache %>. Дана директива містить декілька атрибутів, які дозволяють виконувати настройку:

1.     Duration. Атрибут дозволяє вказати кількість часу в секундах, через який кеш необхідно буде обновити.

2.     VaryByParam. Дозволяє вказати значення, що представляє собою набір ідентифікаторів, значення яких впливатимуть на стан кешу для даної сторінки. Набір ідентифікаторів представляє собою рядок із іменами ідентифікаторів, які знаходяться на сторінці. Крім імен ідентифікаторів дозволяється вказувати значення * (будь-який набір) та none (не використовувати кешування за параметрами).

3.     VaryByControl. Вказується ім'я елемента керування, що знаходиться на веб-сторінці. Окрема копія сторінки в кеші буде створюватись для кожного значення зазначеного елемента керування.

4.     VaryByHeader. Вказується рядок, який передається в заголовку запиту клієнта.

5.     Location. Вказується місце зберігання кешу. 

Часткове кешування сторінки дозволяє зберігати в кеші не всю сторінку, а лише окрему її частину. Така потреба може виникнути при використанні на сторінці одночасно статичного та динамічного контенту. Наприклад, якщо в якості динамічного частини сторінки використовується компонент представлення набору даних із БД, то може виникнути необхідність зберігати в кеші тільки цей компонент, оскільки кешування всієї сторінки знизить швидкодію веб-сервера та підвищить вимоги до оперативної пам'яті. Існує 2 підходи до використання часткового кешування:

1.     Кешування усієї сторінки, за винятком окремих частин. Для таких випадків призначено спеціальний компонент Substitution. Він дозволяє виконувати примусове оновлення сторінки і базується на використанні методу класу, який генерує оновлені дані. Назва методу вказується в атрибуті MethodName. Наприклад:

<asp:Substitution

        id="Substitution1"

        MethodName="GetTime"

        Runat="server" />

2.     Кешування окремого елемента керування користувача (user control). В більшості випадків веб-сторінки будуються на основі готових блоків. Такі блоки розміщуються в окремих модулях і реалізовують необхідну за призначенням логіку роботи. Елементи керування користувача дозволяють використовувати усі вищезазначені механізми кешування ASP.NET 2.0.

Кешування джерела даних дозволяє виконувати кешування не тільки на рівні сторінки або елемента керування користувача, а й окремих компонентів, які працюють із наборами даних. Така можливість є дуже зручною, оскільки більшість ASP.NET 2.0 так чи інакше обробляють інформацію із БД. Усі компоненти для роботи із наборами даних дозволяють використовувати даний вид кешування. Крім того, вони дозволяють автоматично оновити вміст кешу при зміні інформації в джерелі даних (БД, XML-файлі тощо). Наприклад, для виконання кешування елементу SqlDataSource необхідно використовувати наступний код (напівжирним виділені рядки, що відносяться до настройки кешу):

<asp:SqlDataSource

        id="srcMovies"

        EnableCaching="True"

        CacheDuration="3600"

        SelectCommand="SELECT * FROM Movies"

        ConnectionString="<%$ ConnectionStrings:Movies %>"

        Runat="server" />

Кешування даних представляє собою механізм, який неявно використовують усі вищезазначені схеми кешування. Основу даного механізму забезпечує спеціальний об’єкт Cache. Екземпляр об'єкту створюється для кожного додатку ASP.NET 2.0. Це означає, що для кожної окремої сторінки використовується один і той же екземпляр об'єкту Cache. Даний об'єкт дозволяє отримувати доступ до вмісту кешу програмно, тобто із коду сторінки.

 

Література:

1.     Stephen Walther, ASP.NET 2.0 Unleashed”, Sams, 2006 – 1992 pgs.

2.     Scott Mitchell, “Sams Teach Yourself ASP.NET 2.0 in 24 Hours”, Sams, 2006 – 696 pgs.