ab1176aa75b493109428f8309d47824b.ppt
- Количество слайдов: 9
Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4 -го курса кафедры Компьютерных технологий физического факультета Донецкого национального университета Технологии разработки Internetприложений ASP. NET приложения – оптимизация скорости работы приложений проф. В. К. Толстых, www. tolstykh. com
Что надо оптимизировать? 1. Скорость работы приложения на сервере, 2. Скорость работы Web-страниц у клиента в браузере, 3. Скорость доставки ответа клиенту.
1. Скорость работы приложения на сервере (Back-end оптимизация) § Пишите качественные коды C#, которые могли бы быстро работать и генерировать минимальные размеры HTTP ответов клиенту. § Кэшируйте вывод страниц как на сервере, так и для браузеров клиентов где это возможно, например, через директиву @Output. Cache. § Не кэшируйте вывод SQL-сервера, а кэшируйте компоненты и страницы, где этот вывод присутствует. § Делайте предкомпиляцию и разумную пакетную компиляцию сборок. § Если приложение имеет много сборок и файлов – сжимайте их в одну управляемую сборку, которая будет хранить сжатые сборки в себе и при необходимости загружать их динамически. Загрузка приложения, в котором много зависимостей, занимает обычно больше времени, чем загрузка одного исполняемого файла с последующей подгрузкой необходимых модулей прямо в памяти. Для этого можно использовать открытые библиотеки Code. Plex: NBox, Seven. Zip. Sharp …
2. Скорость работы в браузере (Front-end оптимизация) § Минимизируйте количество файлов, запрашиваемых браузером для каждой Webстраницы – это очень важно! (- и для скорости работы браузера, и для скорости передачи) особенно для версии НТТP/1. ü не разделяйте стили на несколько файлов для одной и той же страницы, ü скрипты объединяйте в файлы так, чтобы для каждой страницы запрашивался один файл и он содержал минимальное количество «сторонних» скриптов, которые могли бы использоваться на соседних страницах, ü не злоупотребляйте графическими файлами и по количеству, и по размеру, ü множество графических файлов (спрайты) можно объединить в один (спрайтсет) и далее посредством CSS background-image и background-position показывать сегменты-спрайты этого файла. Это эффективно даже в HTTP/2. § Размещайте CSS файлы, стили в начале страницы, а скрипты – в конце. § При настройке кэширования в приложении устанавливайте кэширование статических компонент на стороне клиента на максимальный срок (never expire). § Отключайте в приложении состояние представления (View. State) для элементов, страниц где оно не требуется.
3. Трафик ответа клиенту 3. § Включайте в IIS сжатие ответов Web-приложения (подробнее далее) если передаются большие файлы по каналам с низкой пропускной способностью. § Сжимайте файлы CSS и Java. Script посредством автоматического удаления комментариев, лишних пробелов, переносов строк и т. п. , например, с использованием библиотеки YUI Compressor for. Net (пример см. далее). § Объединяйте, сжимайте и кэшируйте файлы CSS и Java. Script в реальном времени посредством добавления обработчика Http. Combiner в ваш проект (пример см. далее)
Сжатие ответов Web-приложения Или web. config: IIS осуществляет сжатие ответов (обычно по UNIX -алгоритму gzip) при условиях: 1. Разрешение сжатия включено на сервере, 2. <url. Compression do. Dynamic. Compression="true" do. Static. Compression="true" /> Сжатия осуществляется на основе информации из заголовков HTTP-запросов, где от браузера содержится Accept. Encoding. Здесь указывается поддерживаемый браузером алгоритм сжатия, необходимый для декомпрессии ответа. ü статическое сжатие результаты статических ответов (. html…) могут быть сжаты и записаны в кэш IIS, используемый далее многочисленными запросами, без очередных сжатий и, соответственно, без дополнительных затрат ресурсов ЦП. ü динамическое сжатие Кэш статического сжатия устанавливается для всего сервера IIS сжимает версии динамического выхода (. aspx…), но не записывает их в кэш Такое сжатие потребляет значительные ресурсы времени ЦП и ОЗУ. HTTP-сжатие, начиная с IIS 7. 0, настраивается путем указания типов MIME, которые могут быть сжаты. Настройки сжатия содержатся в application. Host. config.
Yahoo! YUI Compressor for. Net сжатие файлов. css и. js § Загрузите файл сборок «Yahoo. Yui. Compressor v…. zip (for. NET …). zip» и пример файла настроек MSBuild. xml. § Создайте проект «ASP. NET Web Application» и поместите в его папку MSBuild полученные сборки и файл настроек. § Уточните в файле MSBuilder. xml для элемента <Using. Task…> путь к сборке Assembly. File= "Yahoo. Yui. Compressor. dll", для элемента <Item. Group> пути исходных. css и. js файлов, а для <Property. Group> – конечных (сжатых) файлов. § В свойствах проекта добавьте Post-build событие. § Компилируйте проект – Build.
Исходный файл стилей - Сжатый файл стилей -
Http. Combiner. ashx Пользовательский HTTP-обработчик для объединения файлов. css и. js, их сжатия (gzip ) и кэширования в ASP. NET Пример подключения стилей и скриптов при помощи Http. Combiner. ashx на HTML-странице. Объединённые файлы, присоединяемые на этой странице, указываются в файле web. config. Это ПО типа «as is» , т. е. – отсутствие каких-либо гарантий. Например, какойлибо прокси-сервер может «неадекватно» обработать сжатый ответ. Объединённые файлы
ab1176aa75b493109428f8309d47824b.ppt