29.09.2011

Плъгин UI Perfomance

* Source text URL: http://www.grails.org/plugin/ui-performance/



Плъгин UI Perfomamace адресира някои от 14 правила от Стив Судерс и екипа на производителността на Yahoo.
При пускането на версия 1.2 плъгин е включен във всички среди, включвайки разработката. Гледайте дискуссия по-долу за “включен” атрибут на конфигурация за да отключва го за разработка.

Инсталиране

За да интегрира плъгина в Вашето приложение, достатъчно е да изпълня скриптинг Grails ‘install-plugin’, например:
Grailsinstall-pluginui-perfomance
Плъгинът е тестван от първия ред в 1.0.4, но работи в 1.0.3. Поради промени от Events.groovy к _Events.groovy, той не работи в 1.0.3 без малки промени. След като Вие сте инсталирали плъгина, преименувайте plugins/ui-perfomance-1.2/scripts/_Events.groovy в Events.groovy. Това трябва да бъде направено само веднъж, и само за 1.0.3.

Функции

  • Намалява и компресира.js и css файлове
  • Конфигурира.js,.css, и файлове на изображения (включвайки favicon.ico) за кеширането чрез преименуван с увеличаване на число на сглобяване и инсталиране на изтичащето заглавие far-future
  • Осигурява taglibs, които са знаещи на gzip и версия, за да позволи на разработчици да работят, не имайки работа с детайли на версия или gzip
  • Компресира динамическият текстов контент (GSP, JSON, XML, и т.н.)
  • Обемът на работата изпълнен във времето на сглобяване и проблеми появяващи се  във времето на сглобяване вместо след разгръщането. Скриптът _Events.groovy се свързва в процесс на създаване на war  и комперсира/превежда/намалява статичните ресурси преди файл war  да бъде опакован
  • Преписва вътрешните URL  в файлове CSS, за да посочва  версираните изображения
  • Поддържа изображения на Спрайта чрез taglib
  • Помага да премества JavaScript в краят на тялото на програма чрез taglib
  • Не използва сървлет – само няколко taglib-и и Филтър, позволявайки на контейнера (или външен уеб-сървър) да продължава да служи за статичен ресурс, няма никакви времени файлове и стойността на времето на изпълнение е минималната – всичко се намира в war – и по-малко на обработване в сървъра – трябва само да проверя дали клиентът поддържи gzip  при рендеринг <jacascript>,<css>, и <img> тагове в GSP

Grails-friendly може да бъде включен за среда така че в режима на разработка той не прави нищо, и само бил включен в производителен (или “осигуряване на качество”, ако имате онази “бързодействаща” среда например) режим, за такъв начин няма никаква потребност за проверка за модификация, когато той е включен, тъй като Grails не поддържи модификации освен в режима на разработка и много параметри на конфигурации.
Динамическото текстово компресиране използва PJL CompressingFilter с конфигурация, заимствани от Compressplugin (плъгин на компресирането). Погледайте тази дискуссия за параметри на конфигурация, заимствани от Compressplugin (плъгин на компресирането) и страници на проекта на филтъра Sourceforge за по-голямото количество на детайли на нейната конфигурация.
Мотивация
Намалява размер на качване JavaScript и файлове CSS файлове на плъгини gzips.js и.css. Разбира се, не всички браузъри поддържат gzip, за такъв начин, изходните некомпресирани файлове са съхранени. Заглавието “acept-encoding” е проверено, за да определи, дали компресирана или некомпресирана версия трябва да бъде изпратена.
Плъгинът също намалява и.js и.css, използвайки YUI Compressor.
Другата особенноста, коята намалява натоварването на сървъра е управление от версии, и далечно бъдещето на заглавията “Expires” и “Cache-Control”. Ако Вие не правите никакво кеширането, тогава всеки път, когато браузър ще качва страница, той ще направи запитването към сървъра, за да определи, дали всеки файл е бил обновен. Тъй като статичните ресурси рядко се променят, тези запитвания предизвикват ненужен трафик от сървъра с 304-ия код на отговора.
Всеки път, когато правите сглобяването, новата версия се прилага върху цялото изображение,.js и/css файлове, за такъв начин, файлове могат да се кешират винаги. В следващият път, когато ще разгръщате новата версия на приложението си, всички имена на файлове на ресурси се променят, щом като се изискват файлове.

ok ok