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

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

Кэширование и строка запроса

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

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

Наш пример устанавливает атрибут VaryByParam равным None, что сообщает ASP.NET, что мы хотим хранить только одну копию кэшируемой страницы, которая подходит для всех сценариев. Если запрос к этой странице будет добавлять строку аргументов к URL, это не имеет значения — ASP.NET все время будет использовать тот же самый вывод, пока он не устареет. Вы можете проверить это, добавляя параметр строки запроса вручную в окне браузера (как, например, ?a=b).

На основе этого эксперимента вы можете предположить, что кэширование вывода не подходит для страниц, использующих аргументы в строке запроса. Однако ASP.NET предлагает другой выбор. Можно установить значение атрибута VaryByBaram равным "*", чтобы указать, что страница использует строку запроса, и таким образом проинструктировать ASP.NET о том. что нужно кэшировать отдельные копии страницы для разных значений аргументов в строке запроса, как показано ниже:

<%@ OutputCache Duration="20" VaryByParam="*" %>

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

предыдущая    следующая страница    вначало главы    оглавление

485

Hosted by uCoz