Проф. В.К.Толстых, www.tolstykh.com Технологии разработки Internet- приложений ASP.NET приложения – Кэширование вывода страниц Из цикла лекций «Технологии.

Презентация:



Advertisements
Похожие презентации
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – локализация ресурсов приложения Из цикла лекций «Технологии.
Advertisements

Проф. В.К.Толстых, Технологии разработки Internet- приложений Администрирование IIS 5, 6 сайт, виртуальный каталог, приложение, пул, рабочий.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – оптимизация скорости работы приложений Из цикла лекций.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET примеры: динамические таблицы, привязка данных к выпадающему списку.
Проф. В.К.Толстых, Технологии разработки Internet- приложений Эталонные страницы – Master pages Из цикла лекций «Технологии разработки.
Проф. В.К.Толстых, Пример Web-службы Калькулятор с валидацией Из цикла лекций «Internet-технологии разработки приложений» для студентов.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – Модули HTTP, фильтры, события приложения - Global.asax.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – обработка ошибок страниц и приложения, Global.aspx.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – пользовательские элементы управления Из цикла лекций.
ДонНУ, кафедра КТ, проф.В.К.Толстых Технологии разработки Internet- приложений ASP.NET приложения: Безопасность – аутентификация Из цикла лекций «Технологии.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – директивы Из цикла лекций «Технологии разработки Internet-приложений»
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET примеры: обработка данных форм. работа с формами работа с формами.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – валидация, валидационные элементы управления Из цикла.
Проф. В.К.Толстых, Технологии разработки Internet- приложений Архитектура IIS 5, IIS 6, исполняющая среда ASP.NET в IIS 7, конфигурирование.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET примеры: HtmlControls Из цикла лекций «Технологии разработки Internet-приложений»
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – ASP.NET-процесс, пул, домен приложения, компиляция,
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – класс Control Из цикла лекций «Технологии разработки.
ДонНУ, кафедра КТ, проф.В.К.Толстых WCF-службы Создание и тестирование.dll-библиотеки WCF-служб Из цикла лекций «Internet-технологии разработки приложений»
Проф. В.К.Толстых, Выполнил студент: Тышлек С.В., 2009 Технологии разработки Internet- приложений Из цикла лекций «Технологии разработки.
Проф. В.К.Толстых, Технологии разработки Internet- приложений Delphi for.NET примеры: работа с файлами Из цикла лекций «Технологии разработки.
Транксрипт:

проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – Кэширование вывода страниц Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4-го курса кафедры Компьютерных технологий физического факультета Донецкого национального университета

Понятие кэширования Ответ может кэшироваться на Web-сервере, в браузере клиента, или на Proxy-сервере. IIS поддерживает кэширование на Web-сервере в режиме пользователя и на уровне ядра операционной системы. Драйвер http.sys (см. Архитектура IIS.ppt) работает на уровне ядра операционной системы (ОС). Он анализирует и фильтрует входящие сетевые запросы на предмет соответствия кэшированным страницам. Если соответствие найдено, то ядро ОС отправляет клиенту ответ, вообще не обращаясь к рабочему процессу и конвейеру ASP.NET. Это в десятки раз повышает производительность Web-сервера.Архитектура IIS.ppt Правила кэширования устанавливаются на уровне сервера Включение кэша в режиме пользователя, т.е. для служб IIS, в т.ч. для конвейера ASP.NET Включение кэша в режиме ядра ОС, т.е. до работы конвейера ASP.NET Максимальный размер кэшируемого отклика как для кэша в режиме пользователя, так и для кэша в режиме ядра 0 – службы IIS будут использовать половину доступной физической памяти или половину виртуальной памяти, в зависимости от того, какое значение меньше.

Кэширования заданных файлов Добавление правила кэширования для заданных типов файлов на уровне сервера в режиме пользователя или ядра

Управление кэшированием на страницах приложения Для включения кэширования вывода страницы (на Web-сервере на уровне ядра, или в браузере клиента, или на Proxy-сервере) необходимо в начале файла разместить например, Здесь указаны два обязательные атрибута: Duration - устанавливает срок кэширования в секундах, VaryByParam - устанавливает зависимость кэширования от GETи POST параметров: None – не зависит от параметров, т.е. для любых GETи POST параметров будет выводится одна и та же кэшированная страница; * – для всех сочетаний значений всех GETи POST параметров будут создаваться отдельные копии страницы в кэше. Необдуманное использование этого режима может занять очень большие ресурсы памяти; список строк (разделённых символом точки с запятой), содержащих имена атрибутов строки запроса GET или имена полей, возвращаемых в теле POST запроса. Замечание. Установка кэширования страницы исключает возможность её аутентификации т. к. кэшированные страницы на уровне ядра вообще обходят конвейер ASP.NET.

Некоторые дополнительные атрибуты кэширования: Location- устанавливает место кэширования страницы (Web-сервер, браузер,Proxy): Any – страница может кэшироваться где угодно (значение по умолчанию); Client – страница может кэшируется браузером; DownStream – страница может кэшироваться и браузером и Proxy-сервером; None – кэширование отключается везде; Server – страница кэшируется только на Web-сервере; SqlDependency- устанавливает зависимость от заданной таблицы базы данных SQL. Например, вывод страницы будет кэшироваться в течение 15 секунд или до тех пор пока в одну из записей таблицы Employees базы Job не будет внесено изменение. Имейте в виду, что в кэше будет храниться количество копий текущей страницы равное количеству записей в таблице Employees. VaryByCustom - любой текст, представляющий пользовательские требования кэширования. Обычно используют для локализации пользовательских компонент (см. пример далее). VaryByHeader- указывает список заголовков HTTP, используемых для изменения кэша для различных версий запрашиваемого документа. VaryByContentEncodings- используется с Accept-Encoding заголовком HTTP для кэширования ответов с различной кодировкой содержимого. …продолжение

Кэширование частей страницы Кэширование частями предполагает применение пользовательских элементов управления. Пользовательские элементы можно кэшировать по отдельности с учётом GET, POST параметров. Для страниц, содержащих динамические разделы, можно выделить статические части в один или более пользовательских элементов управления и использовать для их кэширования. Кэшируемый вывод страниц и пользовательских элементов управления чаще всего варьируют по значениям свойств вложенных в них элементов управления, а не по GET, POST параметрам. В этом случае применяют специальный атрибут кэширования VaryByControl, например, Здесь обеспечивает кэширование (страницы или пользовательских элементов управления) в виде множества копий для всех вариантов сочетания значений, содержащихся элементов ddlCountry и ddlCity. По умолчанию разные страницы не используют одну и ту же кэшированную копию пользовательского элемента управления. Для того, чтобы этого избежать надо в добавить атрибут Shared со значением true, например, Замечание 1. Использование VaryByControl, при наличии в пользовательском элементе управления кодов C#, может приводить к некорректной работе с кэш-копией компонента. Необходимая копия пользовательского элемента, может отсутствовать в памяти. См. примеры пользовательского элемента с одним и двумя выпадающими списками.одним двумя Замечание 2. Во избежание проблем с памятью необходимо ограничивать объём памяти, доступной программному обеспечению IIS (Maximum Used Memory – для каждого пула приложений). Обычно он составляет 60% общего объёма физической памяти компьютера.

Кэширование и локализация Когда мы запрашиваем страницу первый раз, то OutputCache её кэширует. При втором запросе, когда мы нажимаем на ссылке выбора языка, OutputCache «думает», что ничего не изменилось и возвращает эту же страницу из кэша, т.е. страница повторно не создается и языковая локализация страницы не происходит. Пользовательские компоненты (страницы), содержащие локализацию культуры, целесообразно кэшировать с дополнительным атрибутом VaryByCustom= lang Замечание. Параметр lang не имеет никакого особого значения, это простая строка, которая далее используется, для анализа ситуации кэширования, связанной с локализацией. Необходимость учёта локализации культуры компонента при его кэшировании реализуется в файле Global.asax : public override string GetVaryByCustomString(HttpContext context, string value) { if (value.Equals("lang")) { return Thread.CurrentThread.CurrentUICulture.Name; } return base.GetVaryByCustomString(context,value); } Вначале данный метод проверяет, – если значение параметра соответствует "lang", то возвращает имя текущей культуры. Иначе возвращает значение стандартной реализации. В принципе, можно и не использовать этот метод и значение параметра VaryByCustom= lang. Можно, просто, указать VaryByCustom= *, но тогда кэширование будет реализовываться для всех возможных пользовательских параметров, от которых, по логике программы, этого не должно быть.

Провайдеры кэша ASP.NET 4 позволяет разработчику создать один или несколько собственных провайдеров кэша. «Output-cache providers» могут использовать любой механизм хранения HTML-содержимого. Это делает возможным создать провайдеры кэша с хранением данных как на локальных жестких дисках, так и на удаленных ресурсах – share, ftp, cloud. Например, для кэширования страницы не в оперативной памяти (работает по умолчанию), а на диске можно дописать в соответствующем атрибуте страницы новый параметр providerName. Например: Разработчик может выбирать стратегию кэширования веб-приложений. Например, можно кэшировать «Топ 10» страниц сайта в памяти, в то время, как менее популярные страницы будут кэшироваться на диск. Место кэширования можно выбирать и на уровне запросов к приложению – в файле Global.asax, например: public override string GetOutputCacheProviderName(HttpContext context) { if (context.Request.Path.EndsWith(" Advanced.aspx ")) return "DiskCache"; else return base.GetOutputCacheProviderName(context); }