Arek Waczyk - Wpisy, ktre warto poczyta

Minify – Sympatyczne narzdzie dla Web-Designerw

Czwartek, 21 lutego 2013 godzina 8:45 Programowanie
Minify – Sympatyczne narzdzie dla Web-Designerw

W wielu projektach WWW dochodzi do momentu, e pliki tekstowe takie jak PHP, JS czy arkusze stylów CSS zaczynaj przybiera spore rozmiary. Generalnie w niczym to nie przeszkadza, ale co si dzieje kiedy witryna posiada kilkadziesit zapyta w cigu sekundy, a do wczytania jest kilka lub kilkadziesit takich plików. Z pomoc przychodz wówczas rónorakie techniki i narzdzia do optymalizacji. Dzi omówi prosty skrypt o nazwie Minify.

Dlaczego warto optymalizowa

Najwiksze witryny na wiecie w cigu sekundy musz odpowiedzie nawet na kilka tysicy zapyta. Myl teraz o popularnej Wikipedii, której to serwery pracuj nieustannie na do wysokich obrotach, ale przy tym nie koniecznie szczególnie si mcz. Czy moecie sobie wyobrazi ich dziaanie gdyby nagle odci ich od moliwoci „cachowania” zapyta do baz danych oraz kompresowania zwracanej treci w locie? Z dowiadczenia wiem, e nawet najtsze serwery i cza odmówiyby posuszestwa.

Jednake w tym wpisie nie bd omawia techniki, takiej jak na przykad owe buforowanie wyników zapyta bazodanowych, czy pakowania zwracanej treci po stornie serwera. Zwróc jednak uwag na bardzo proste i praktyczne narzdzie, które z pewnoci mio zaskoczy projektantów stron WWW, którzy jeszcze z podobnych narzdzi nie korzystali.

Minify to kompresor rónorakiego kodu. Obsuguje pliki CSS oraz JS. Do plików PHP istniej oczywicie podobne rozwizania, ale w tym wpisie skupi si na optymalizacji arkusza stylów.

Skrypt dostpny jest online pod tym linkiem: Minify CSS Compresor

Jak to dziaa?

Zasada dziaania jest oczywicie banalna. Zaómy zatem, e mamy swój kod CSS na przykad ja posu si takim wstukanym na szybko nic nie robicym arkuszem.

body{
	font-family: Arial;
	font-size: 12pt;
	color: #ffffff;
	margin: 0;
}

.main{
	font-size: 12pt;
	color: #ff0000;
}

.container{
	font-size: 12pt;
	color: #ff0000;
}

.super-container{
	font-size: 12pt;
	color: #ff0000;
}

.submain{
	color: #ff0000;
	margin: 0;
}

.mycalss{
	overflow: hidden;
}

.newstyleclass{
	font-family: Georgia;
	margin: 15px;
	overflow: hidden;
}

W powyszym przykadzie trzy klasy (main, container i super-container) maj identyczn zawarto. W trakcie pisania duych arkuszy stylów to si przytrafia i moe atwo zosta przeoczone. I tutaj z pomoc przychodzi kompresor, który po wczeniu funkcji „Regroup selectors: Merge selectors with the same properties”, czyli zczanie selektorów klas z identycznymi wasnociami, wyapie kade takie powtórzenie i scali je do kupy. Dodatkowo mona aktywowa funkcj kompresowania kolorów oraz wielu innych waciwoci. Poniszy przykad zosta zoptymalizowany w trybie „Standard” polegajcym na zachowaniu równowagi pomidzy czytelnoci, a objtoci.

body {
font-family:Arial;
font-size:12pt;
color:#fff;
margin:0;
}

.submain {
color:red;
margin:0;
}

.mycalss {
overflow:hidden;
}

.newstyleclass {
font-family:Georgia;
overflow:hidden;
margin:15px;
}

.main,.container,.super-container {
font-size:12pt;
color:red;
}

Przyjrzyjmy si teraz jak bdzie wyglda kod w trybie „High”, który zmniejsza czytelno kodu, ale proporcjonalnie do objtoci caego pliku. Dodatkowo aktywowaem równie funkcj, która usuwa rednik w ostatniej waciwoci selektora.

body{font-family:Arial;font-size:12pt;color:#fff;margin:0}
.submain{color:red;margin:0}
.mycalss{overflow:hidden}
.newstyleclass{font-family:Georgia;overflow:hidden;margin:15px}
.main,.container,.super-container{font-size:12pt;color:red}

A co jeli chcemy upchn wszystko w jedn linijk, gdy zupenie nie zaley nam na jakiejkolwiek czytelnoci kodu? Nie ma problemu – tryb „Higest” zrobi to szybko i precyzyjnie. Oto nasz kod po zastosowaniu najwikszej kompresji.

body{font-family:Arial;font-size:12pt;color:#fff;margin:0}.submain{color:red;margin:0}.mycalss{overflow:hidden}.newstyleclass{font-family:Georgia;overflow:hidden;margin:15px}.main,.container,.super-container{font-size:12pt;color:red}

Oczywicie w przypadku tak maej objtoci pliku wszystko jest widoczne, ale wyobracie sobie odczyt arkusza liczcego sobie kilkaset linijek po przetworzeniu do takiego stopnia, gdzie praktycznie usuwane s znaki nowej linii.

Podsumowanie i wnioski

Po zastosowaniu zabiegu kompresji udao si zmniejszy objto pliku CSS prawie o poow. Skrypt po kadym cyklu informuje o tym, ile zawartoci udao si odci od arkusza. Narzdzie moe by wietnym uzupenieniem w przypadku kiedy zaley nam na optymalnym dziaaniu serwisu cieszcego si du popularnoci, ale równie pozwoli zachowa porzdek w kodzie co czyni je praktycznym dla kadego.

Podstawow wad moe by moliwo grupowania do kupy tylko tych selektorów, które posiadaj identyczne wszystkie waciwoci, a nie na przykad wybieranie z poszczególnych selektorów pojedynczych wasnoci, które si powtarzaj.

Jednake skrypt daje moliwo wprowadzania wasnego szablonu przetwarzania co czyni go jeszcze bardziej konfigurowalnym, a jego uyteczno sprawia, e bez wzgldu na wspomnian wad jest on godny uwagi.

Komentarze oraz dyskusja na temat wpisu

Rangle pisze: Pitek, 24 czerwca 2016 godzina 23:15

Thank you so much for this aricelt, it saved me time!

Gregorycow pisze: Wtorek, 1 maja 2018 godzina 14:07

<a href=https://goo.gl/j2vPXb>Energy Slim</a> – это эксклюзивная революционная линейка продуктов для похудения.

Justinapoda pisze: Pitek, 18 maja 2018 godzina 3:26


Nicely put. Regards!

Justinapoda pisze: Wtorek, 22 maja 2018 godzina 20:36


Nicely put. Cheers.

medanrer pisze: roda, 11 lipca 2018 godzina 5:23

Поняв, как работает принцип осознанного сновиденияи изучив способы управления сознанием, Вы сможете получить незабываемый опыт. Рационализировать и разукрасить бытие поможет современное решение - прибор для осознанных снов. Данное устройство доступно для заказа на нашем сайте по самой оптимальной цене.

Как часто бывали с Вами случаи, когда Вы не могли до конца осознать, во сне Вы находитесь или в реальности? А сколько раз вам снились кошмары? Помимо этого, многие люди впадают в состояние паралича во время сна - при этом Вам кажется, что Вы не можете двигаться. А теперь представьте, что всего этого можно избежать и превратить неприятные сновидения, например, в увлекательные путешествия во сне. Заказав на нашем сайте прибор "DreamTrainer", Вы навсегда забудете о кошмарных сновидениях.

Метод осознанных сновиденийпозволяет полностью управлять развитием событий во сне - Вы сами можете выбирать сюжет своего сновидения, став практически разработчиком виртуальной реальности. Во сне Вы сможете воплотить любые свои фантазии, разобраться со своим внутренним миром, избавиться от многих проблем - приборы для осознанных сновидений станут для Вас незаменимыми помощниками.

Благодаря инновационной методике контроля состояния, Вы сможете достаточно быстро добиться нужного результата. Специальное устройство, в котором установлен акселерометр и светодиоды, устанавливается на одной из дужек очков и реагирует на малейшее изменение положения туловища или кивок головы. Таким образом, обращая внимание на изменения индикаторов, Вы сможете контролировать свое состояние. Приучая свой мозг контролировать состояние реальности в дневное время, вы, со временем, сможете перейти к осознанным сновидениям и полностью раскрыть их потенциал.

<a href=https://claps.me/catalog/pribory-dlya-osoznannykh-snov/dreamtrainer-proverka-osoznannosti/>Прибор осознанного сна</a> является результатом многих исследований, направленных на изучение возможного влияния человека на развитие событий во сне. Было выяснено, что дело здесь не в силе воле или окружающих факторах, а именно в умении осознавать состояние реальности. Осознанные сновидения доступны!

Тренировки не займут у Вас много времени, справиться с ними может любой желающий. Уже вскоре вы научитесь распознавать реальность на подсознательном уровне и переходить к состоянию управляемого сна. Те преимущества, которые вы получите, в тысячи, если не миллионы раз выше по сравнению с доступной стоимостью прибора. Оцените преимущества осознанных сновидений, заказав на нашем сайте прибор "DreamTrainer".

Napisz swj komentarz

Twoje zdanie na ten temat rwnie mnie interesuje. Podawanie adresu e-mail nie jest wymagane.