HTML Minifier ma być docelowo praktyczną realizacją manifestu, który Kangax opublikował na swoim blogu pod koniec zeszłego roku. Uznał wówczas, że stan narzędzi do minimalizacji kodu HTML jest raczej marny – sporo można znaleźć oprogramowania do kompresji kodu JavaScriptu i CSS, ale dla HTML nie ma niczego dobrego, a to co jest dostępne, nie działa zbyt sensownie, zamieniając np. znaczniki <strong> w <b> – mimo że nie są one wymienne.
Przyczyną niewielkiego zaangażowania deweloperów w kwestię minimalizacji HTML jest zwykle niewielka opłacalność takich działań – przynajmniej w porównaniu do tego, co osiąga się dla JS i CSS. „Minimalizacja taka musi być realizowana na żądanie i niesie ze sobą pewien narzut” – pisze Kangax. Jedynie wówczas, gdy narzut jest mniejszy niż różnica w rozmiarach dokumentu oryginalnego i zminimalizowanego, praktyka ta ma sens.
Mimo to haker zdecydował się rozpocząć testy napisanego w JavaScripcie systemu minimalizacji kodu HTML, który miałby wbudowany mechanizm typu lint – znane z uniksów narzędzie do analizowania kodu pod kątem podejrzanych instrukcji czy najczęściej popełnianych prostych błędów wynikających z przeoczeń.
Narzędzie zbudowane jest na bazie parsera HTML-u napisanego przez Johna Resiga. Parser ten radzi sobie z całkiem złożonymi dokumentami, ale niektóre kwestie mu umykają – np. prologi z deklaracjami typu dokumentu, czy atrybuty, których wartości zawierają w swoich nazwach znak dywizu. Pojawiają się też problemy z obsługą komentarzy i sekcji CDATA. Wszystkie te usterki zostały usunięte w HTML Minifierze.
Nad parserem znajduje się niewielki (mający raptem 250 linii) skrypt, który na wejściu przyjmuje kod HTML i obiekt konfiguracyjny. Kodem tym „karmi” parser i na wyjściu generuje zminimalizowany kod zgodnie z zadanymi opcjami. Eliminowane są m.in. komentarze, zbędne spacje czy atrybuty boole'owskie. Jednak to nie one przyczyniają się w największym stopniu do nadmiernych rozmiarów dokumentów HTML.
Ładowanie





Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.2 Safari/533.2
A z samym gzipem wygląda na to, że też nie jest za różowo:
http://www.stevesouders.com/blog/2009/11/11/whos-not-getting-gzip/
Browser: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2) Gecko/20100213 Firefox/3.6
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6
www.centas.org
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19
Normal
0
21
MicrosoftInternetExplorer4
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:Standardowy;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman";}
Ciekawy temat
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.19) Gecko/2010031422 AskTbUT2V5/3.8.0.12304 Firefox/3.0.19
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.19) Gecko/2010031422 AskTbUT2V5/3.8.0.12304 Firefox/3.0.19