Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемВалентина Девятова
1 проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – Кэширование вывода страниц Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4-го курса кафедры Компьютерных технологий физического факультета Донецкого национального университета
2 Понятие кэширования Ответ может кэшироваться на Web-сервере, в браузере клиента, или на Proxy-сервере. IIS поддерживает кэширование на Web-сервере в режиме пользователя и на уровне ядра операционной системы. Драйвер http.sys (см. Архитектура IIS.ppt) работает на уровне ядра операционной системы (ОС). Он анализирует и фильтрует входящие сетевые запросы на предмет соответствия кэшированным страницам. Если соответствие найдено, то ядро ОС отправляет клиенту ответ, вообще не обращаясь к рабочему процессу и конвейеру ASP.NET. Это в десятки раз повышает производительность Web-сервера.Архитектура IIS.ppt Правила кэширования устанавливаются на уровне сервера Включение кэша в режиме пользователя, т.е. для служб IIS, в т.ч. для конвейера ASP.NET Включение кэша в режиме ядра ОС, т.е. до работы конвейера ASP.NET Максимальный размер кэшируемого отклика как для кэша в режиме пользователя, так и для кэша в режиме ядра 0 – службы IIS будут использовать половину доступной физической памяти или половину виртуальной памяти, в зависимости от того, какое значение меньше.
3 Кэширования заданных файлов Добавление правила кэширования для заданных типов файлов на уровне сервера в режиме пользователя или ядра
4 Управление кэшированием на страницах приложения Для включения кэширования вывода страницы (на Web-сервере на уровне ядра, или в браузере клиента, или на Proxy-сервере) необходимо в начале файла разместить например, Здесь указаны два обязательные атрибута: Duration - устанавливает срок кэширования в секундах, VaryByParam - устанавливает зависимость кэширования от GETи POST параметров: None – не зависит от параметров, т.е. для любых GETи POST параметров будет выводится одна и та же кэшированная страница; * – для всех сочетаний значений всех GETи POST параметров будут создаваться отдельные копии страницы в кэше. Необдуманное использование этого режима может занять очень большие ресурсы памяти; список строк (разделённых символом точки с запятой), содержащих имена атрибутов строки запроса GET или имена полей, возвращаемых в теле POST запроса. Замечание. Установка кэширования страницы исключает возможность её аутентификации т. к. кэшированные страницы на уровне ядра вообще обходят конвейер ASP.NET.
5 Некоторые дополнительные атрибуты кэширования: Location- устанавливает место кэширования страницы (Web-сервер, браузер,Proxy): Any – страница может кэшироваться где угодно (значение по умолчанию); Client – страница может кэшируется браузером; DownStream – страница может кэшироваться и браузером и Proxy-сервером; None – кэширование отключается везде; Server – страница кэшируется только на Web-сервере; SqlDependency- устанавливает зависимость от заданной таблицы базы данных SQL. Например, вывод страницы будет кэшироваться в течение 15 секунд или до тех пор пока в одну из записей таблицы Employees базы Job не будет внесено изменение. Имейте в виду, что в кэше будет храниться количество копий текущей страницы равное количеству записей в таблице Employees. VaryByCustom - любой текст, представляющий пользовательские требования кэширования. Обычно используют для локализации пользовательских компонент (см. пример далее). VaryByHeader- указывает список заголовков HTTP, используемых для изменения кэша для различных версий запрашиваемого документа. VaryByContentEncodings- используется с Accept-Encoding заголовком HTTP для кэширования ответов с различной кодировкой содержимого. …продолжение
6 Кэширование частей страницы Кэширование частями предполагает применение пользовательских элементов управления. Пользовательские элементы можно кэшировать по отдельности с учётом GET, POST параметров. Для страниц, содержащих динамические разделы, можно выделить статические части в один или более пользовательских элементов управления и использовать для их кэширования. Кэшируемый вывод страниц и пользовательских элементов управления чаще всего варьируют по значениям свойств вложенных в них элементов управления, а не по GET, POST параметрам. В этом случае применяют специальный атрибут кэширования VaryByControl, например, Здесь обеспечивает кэширование (страницы или пользовательских элементов управления) в виде множества копий для всех вариантов сочетания значений, содержащихся элементов ddlCountry и ddlCity. По умолчанию разные страницы не используют одну и ту же кэшированную копию пользовательского элемента управления. Для того, чтобы этого избежать надо в добавить атрибут Shared со значением true, например, Замечание 1. Использование VaryByControl, при наличии в пользовательском элементе управления кодов C#, может приводить к некорректной работе с кэш-копией компонента. Необходимая копия пользовательского элемента, может отсутствовать в памяти. См. примеры пользовательского элемента с одним и двумя выпадающими списками.одним двумя Замечание 2. Во избежание проблем с памятью необходимо ограничивать объём памяти, доступной программному обеспечению IIS (Maximum Used Memory – для каждого пула приложений). Обычно он составляет 60% общего объёма физической памяти компьютера.
7 Кэширование и локализация Когда мы запрашиваем страницу первый раз, то 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= *, но тогда кэширование будет реализовываться для всех возможных пользовательских параметров, от которых, по логике программы, этого не должно быть.
8 Провайдеры кэша 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); }
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.