Skocz do zawartości


loobieto

Rejestracja: 22 lip 2009
Poza forum Ostatnio: 22 lip 2009 14:47
-----

Moje tematy

Optymalizacja kodu html przy pomocy HTML Tidy

17 sierpień 2009 - 13:59

Czyszczenie kodu html programem HTML Tidy
czyli jak skutecznie zmniejszyć objętość stron internetowych, poprawiając przy tym automatycznie błędy składni i struktury

Odwiedzający Twoją stronę marudzą, że nie mogą jej czytać, bo rozjeżdża się w ich przeglądarkach? Może jesteś średnio–zaawansowanym koderem HTML i prowadzisz bałaganiarski styl pisania witryn? Często zdarza Ci się zgubić w gąszczu niezbyt dobrze umieszczonych tagów? Być może szlag Cię trafia gdy walidator znów niejasno informuje cię o znalezionych błędach… Chcąc uczynić źródło bardziej czytelnym i łatwym do edycji skorzystaj z open-source'owej aplikacji HTML Tidy.

Ale o sso chodzi?
Domyślnie program sprawdza czy dokument napisany w języku HTML i XHTML jest zgodny z zaleceniami organizacji W3C. Po co nam one? Otóż zapewniają nas, że strony tworzone zgodnie ze specyfikacją zostaną poprawnie wyświetlone przez wszystkie przeglądarki dbające o standardy. Odnajdując i krótko opisując problem, program pomaga nam dbać o ich poprawność. Więcej informacji na kursie browsehappy.

Poprawność składni
• np. odpowiednie otwieranie i zamykanie tagów, atrybutów, oraz kodowanie znaków
• niezbędne do wyświetlenia dokumentu

Poprawność struktury
• odpowiednia budowa dokumentu — np. umieszczanie elementów liniowych w blokowych, nie odwrotnie
• uniemożliwia błędne zachowanie przeglądarek

Nie można by tak szybciej?
Ustawiając odpowiednie parametry, Tidy sam poprawi pliki .html dając na wyjściu poprawny, odchudzony dokument. Staraj się używać go zawsze gdy pracujesz z programami WYSIWYG które generują nadmiarowy kod.

Dobra, dawaj go…
1. Archiwum .zip wypakuj najpierw do osobnego folderu. Znajdziesz tam dwa pliki.
Dołączona grafika

2. Zainstaluj program: tidy-install.exe.

3. Umieść skrypt skrypt-tidy.bat w tym samym katalogu co pliki .htm i .html.
Dołączona grafika

4. Uruchom skrypt. HTML Tidy wysprząta strony ze zbędnych tagów; osadzając style CSS zamiast przestarzałych tagów , konwertując backslashe (\) na slashe (/) itp.
Dołączona grafika

5. W przykładzie strony zrobione w Wordzie wyraźnie zmniejszyły się. W innym przypadku zmienią się nieznacznie.
Dołączona grafika

Jak działa to twoje maleństwo!?
Utworzony instalator to nic innego jak zbiór plików dostępnych powszechnie w internecie. Składa się na niego:
plik wykonywalny .exe razem z dynamiczną biblioteką .dll
• plik konfiguracyjny .txt, utworzyłem go samodzielnie

Uruchamiając skrypt wykonuje się polecenie wsadowe „każące” przerabiać wszystkie pliki w języku HTML, konsolowym programem tidy.exe który jest już zainstalowany. Powiesz że można go w takim razie uruchomić ręcznie — tak, poleceniem:
tidy -config [ścieżka-konfiguracji.txt] [plik.html]
Cały sekret nie polega na dopisywaniu parametrów do komendy, lecz utworzeniu odpowiedniego pliku z konfiguracją takich parametrów, które chcemy uzyskać. W pakiecie ustawienia są następujące:
anchor-as-name: no
bare: no
clean: yes
doctype: transitional
drop-empty-paras: yes
drop-proprietary-attributes: yes
enclose-text: yes
fix-backslash: yes
fix-bad-comments: no
fix-uri: yes
hide-comments: yes
join-styles: yes
join-classes: yes
lower-literals: yes
merge-divs: auto
merge-spans: auto
ncr: yes
output-html: yes
preserve-entities: yes
quote-ampersand: yes
quote-nbsp: yes
repeated-attributes: keep-last
word-2000: yes
indent: no
indent-spaces: 0
markup: yes
sort-attributes: alpha
wrap: 0
char-encoding: raw
force-output: yes
tidy-mark: no
write-back: yes

Co to ma wszystko znaczyć?
Postaram się wytłumaczyć większość z nich.

[quote]anchor-as-name: no[/quote]
Usuwa istniejący, niepotrzebny atrybut name="…" gdy element posiada atrybut id="…"; gdy go nie posiada, atrybut jest konwertowany: name="…" → id="…".

[quote]bare: no[/quote]
Nie usuwa HTML'owych „dodatków” MS Worda w stylu czy — mogłoby to całkowicie „rozjechać” stronę.

[quote]clean: yes[/quote]
„Rozbiera” zdeprecjonowane elementy i atrubuty, w zamian umieszczając styl CSS w nagłówku.

[quote]doctype: transitional[/quote]
Stosuje przejściową deklarację dokumentu, możesz użyć: strict.

[quote]drop-empty-paras: yes[/quote]
Usuwa puste akapity.

[quote]drop-proprietary-attributes: yes[/quote]
Usuwa znaczniki których zawartości nie widać w przeglądarce, a zawierające informacje o właścicielu pliku (Word).

[quote]fix-backslash: yes[/quote]
Poprawia backslashe na slashe.

[quote]hide-comments: yes[/quote]
Usuwa wszystkie komentarze .

[quote]join-styles: yes[/quote]
Łączy wartości atrybutów style="…" jeśli wykryto takie same.

[quote]lower-literals: yes[/quote]
Zamienia na .

[quote]output-html: yes[/quote]
Zapisuje na wyjściu dokument HTML. Można użyć output-xhtml, żeby został wygenerowany kod zgodny z XML.

[quote]quote-ampersand: yes[/quote]
Zamienia „&” na „&”.

[quote]repeated-attributes: keep-last[/quote]
Zachowuje ostatni atrybut znacznika, jeśli wykryto takie same.

[quote]word-2000: yes[/quote]
Radzi sobie ze stronami z Worda zapisanymi jako „strona html”. Zapisuj witryny jako „strona html, przefiltrowana”, lub użyj przyzwoitego edytora HTML.

[quote]indent-spaces: 0[/quote]
Gdy indent: yes, ustawia ilość spacji jako wcięcia.

[quote]wrap: 0[/quote]
HTML Tidy nie będzie dzielił linii (gdy za długa) np. na 68 znaku.

[quote]char-encoding: raw[/quote]
Pozostawia kodowanie znaków nietknięte.

[quote]force-output: yes[/quote]
Wyświetla wynik na wyjściu nawet, gdy są błędy których nie może poprawić.

[quote]tidy-mark: no[/quote]
Program nie dopisuje się w .

[quote]Program nie dopisuje się w .[/quote]
Nadpisuje pierwotne pliki. Pamiętaj o kopii!

Co z Linuksem?
Program ten dostępny jest również na Linuksie — gotowe paczki znajdziesz w większości depozytorii. Przystosuj tylko plik z ustawieniami.

Wszystko wiem, idę pisać moją stronę…
Internet jest dla ludzi — pisz sensownie o swoich zainteresowaniach, pasji życiowej. Nie musisz znać języka html by tworzyć strony. Używaj Worda, czegokolwiek, pamiętając o tym, by odwiedzający mieli możliwość przeglądania twojej witryny bez nerwów.

Dbaj o wagę plików — im cięższe, tym dłużej czeka się na wczytanie. Zainstaluj Firefoksa, a z nim dodatki: Firebug i Page Speed. Ostatnim add-on'em sprawdzaj objętość gotowych stron. Kompresuj grafikę. Gdy tylko możesz stosuj nie pseudo– ale standardy internetowe; nie polegaj na IE.

Licencja CC.

Kompresja grafiki rastrowej na potrzeby stron www

22 lipiec 2009 - 14:47

Kompresja grafiki rastrowej na potrzeby stron www [wersja 1]
poradnik dla początkujących

W większości na stronach internetowych możemy zobaczyć różnorodne grafiki, stosowane do urozmaicenia przekazu, zachęcenia do dalszego przeglądania serwisu. Gdy odwiedzający mają powolne łącze lub mamy za wolny serwer, przyjemność z surfowania na naszej stronie spada i w najgorszym przypadku gość opuszcza naszą stronę. Można temu zapobiec stosując bezstratną kompresję lub optymalizację już istniejącej grafiki. Najlepszymi formatami na potrzeby stron html są .jpeg i .png. Jpeg - do zdjęć, PNG do banerów, przycisków, schematów czy wykresów. GIF jest przestarzały - można stosować tylko 256 kolorów i 1 kolor przezroczystości; zastępuje go właśnie PNG - można (lecz nie trzeba!) stosować 24bit paletę kolorów i kanały alpha.
Potrzebne oprogramowanie:
• Adobe Photoshop - do ew. stworzenia grafik i zapisania na dysku.
• Paint ;) - jw.
• System operacyjny Linux (w przykładzie Ubuntu 9.04)
• programy optymalizacyjne (poniżej instrukcja ich instalacji)

1. INSTALACJA OPROGRAMOWANIA
Dlaczego Linux? Bo niezbędne kompresory (zwłaszcza pngnq, advpng, optipng) są dostępne w najnowszych wersjach jako paczki z kodem źródłowym niemożliwym do łatwego skompilowania w Windows. Ubuntu można zamówić za darmo prosto do domu lub zupełnie legalnie ściągnąć . W internecie jest mnóstwo artykułów dot. tego systemu i ew. problemach z instalacją/przesiadką z Windows. Można używać obydwu systemów na jednym dysku!
Mając już gotowy system ściągamy najnowszy soft:
• PNGOUT for linux (static!): http://www.jonof.id.au/kenutils
po rozpakowaniu wybieramy jeden(!) plik dla naszej architektury sprzętowej (w tym przypadku
"pngout-linux-i686-static") i wkładamy do katalogu z plikami do docelowej optymalizacji
• z menadżera pakietów Synaptic dociągamy następujące pakiety:
libpng12-dev, optipng, advancecomp, jpegoptim, jpeginfo,
pngquant, pngtools

Dołączona grafika
• możemy sami ściągnąć kody źródłowe z oficjalnych stron optymalizatorów i sami skompilować następujące programy: optipng, pngquant, jpegoptim. Polecam to rozwiązanie. Plusem jest najnowsza wersja powyższych programów co przekłada się na lepszą wydajność i ulepszoną kompresję
• konieczne pobranie i skompilowanie programu "pngnq" w wersji 1.0 (poprawka wprowadzona przez pornela) ze strony: http://pngnq.sourceforge.net/

2. OPTYMALIZACJA GRAFIK JPEG
Posiadając ciężkie grafiki warto zeskalować je do mniejszej rozdzielczości. Wkładamy je do katalogu np. /home/[użytkownik]/kompresja/
Uruchamiamy terminal (tak, potrzebne będzie grzebanie w konsoli!), wchodzimy do powyższego katalogu:
cd /kompresja (mozna używać [Tab] do przyspieszenia operacji) i optymalizujemy zdjęcie:
jpegoptim -m100 --strip-all -f [plik.jpg]
Zawsze podajemy pełną nazwę pliku/korzystamy z pierwszego znaku --> [Tab] i samo uzupełnia nam
nazwy. Mając kilkanaście obrazków do optymalizacji wpisujemy:
jpegoptim -m100 --strip-all -f *.jpg
Polecenie to zachowuje 100% jakość zdjęcia, lecz usuwa niepotrzebne informacje Exif oraz dobiera wydajną kompresję. Więcej o informacji o plikach jpeg uzyskuje się przez:
jpeginfo [plik.jpg]
W powyższym przypadku obrazek zmniejszył się o 40%.
Dołączona grafika
3. OPTYMALIZACJA GRAFIK 24bit PNG
24bitowe pliki PNG zapisane Photoshopem posiadają dużą wagę. Można zmniejszyć je używając na początku optipng, następnie zobaczyć czy zmniejszą się używając advpng z pakietu advancecomp,
by następnie użyć PNGOUT. Zalecam użycie optipng+pngout gdyż zazwyczaj daje to najlepsze rezultaty. Umieść plik pngout'a w katalogu z obrazkiem .png! Wygląda to mniej więcej tak:
optipng -o7 [plik.png] lub
optipng -o7 *.png
nastepnie (mozna) użyć advpng:
advpng -z4 [plik.png]
Dołączona grafika
czy PNGOUT żeby zobaczyć czy ten zmniejszy plik:
./pngout-linux-i686-static [plik.png]
Dołączona grafika
W tym przypadku najlepszy okazał się advpng, choć w większości przypadków PNGOUT okazuje się w tym lepszy o ok. 10-20%. Ogólnie nasz plik zmniejszył się o 25%! Z uwagi na dość duże możliwości
konfiguracji tych programów, zastosowano najlepsze parametry dla optipng i advpng. Chcesz osiągnąć lepszy rezultat?
[program] --help
np. ./pngout-linux-i686-static --help
żeby dowiedzieć się więcej o opcjach

4. OPTYMALIZACJA GRAFIK 24bit PNG NA 8bit PNG
Nie jest to dobre rozwiązanie dla kolorowych obrazków (np. zdjęć z kanałem alpha), gdyż powoduje to redukcję kolorów: z kilku milionów do zaledwie 256. Poniższe programy potrafią zachować kanał alpha.
Możemy zastosować pngquant - jest już trochę postarzały, oficjalna wersja nie zawiera poprawek pornela. Lepsze rezultaty (lepszy dihtering - gładsze obszary, dość wolny ale skutecznie odchudza grafikę) daje ulepszony pngnq w wersji przynajmniej 1.0. Zajmiemy się oboma przypadkami. Obrazek w folderze z PNGOUT.
pngquant [liczba_kolorow] [plik.png]
np. pngquant 256 plik.png (nie nadpisuje pliku tylko tworzy nowy o innej nazwie)
LUB
pngnq -n[liczba_kolorow] -s1 [plik.png]
np. pngnq -n256 -s1 plik.png (nie nadpisuje pliku tylko tworzy nowy o innej nazwie)
Następnie możemy użyć lepszej kompresji z advpng czy PNGOUT, opisane jest to w 3. pkt. Rezultaty?
Pngquant (wyraźnie widoczne piksele): 74% kompresji; pngnq (dość dobry dihtering): 80%. Po
optymalizacji zyskały do odpowiednio: 76%(PNGOUT) i 82%(advpng).
Dołączona grafika

5. OPTYMALIZACJA GIFów DO PNG
Gify charakteryzują się 8bit paletą kolorów - buttony, tła mają odpowiednią ilość kolorów i przyzwoitą wagę. Zwłaszcza Photoshop posiada dość rozbudowane opcje do ich zapisu. Dlaczego warto je jednak
wymienić na 8bit PNG? Jakości nie zyskamy ale w 99% zmniejszymy ich objętość. Zastosujemy optipng do konwersji .gif-->.png następnie pngnq+PNGOUT/advpng. Można użyć pngquant -
jest opisany w 4. pkt. lecz w większości przypadków wydajniejszy jest pngnq. Do dzieła!
optipng -o7 [plik.gif]
utworzy wtedy plik o tej samej nazwie lecz z końcówką .png ;) Sprawdzamy ile ma kolorów poleceniem:
pnginfo [plikdosprawdzenie.png]
Dołączona grafika

Zazwyczaj dobranie max. ilości kolorów w pngnq i dopiero skompresowanie to PNGoutem/advpng skutkuje lepszą kompresją niż dobieranie takiej samej ilości z odczytu pnginfo z grafiki przekonwertowanej optipng. Stosujemy więc 256 kolorów:
pngnq -n256 -s1 [plik.png]
./pngout-linux-i686-static [plikpngnq.png]
ewentualnie
advpng -z4 [plikpngnq.png]
Rezultaty? Optipng+PNGOUT: 20% kompresji; pngquant+PNGOUT: 21%; pngnq+PNGOUT:
32%!

Prowadząc stronę generującą spore obciążenie serwera, warto zaoszczędzić transfer optymalizując grafiki
rastrowe. Zaoszczędzimy wtedy pieniądze a użytkownicy nie będą dłużej czekać na ładującą się grafikę!

Poradnik ten rozprowadzany jest na licencji Creative Commons: Uznanie autorstwa - Na tych samych
warunkach 2.5 Polska.

Wolno:
• kopiować, rozpowszechniać, odtwarzać i wykonywać utwór
• tworzyć utwory zależne
Wszelkie komentarze i uwagi proszę na maila: loobieto@gmail.com
Autor: @lubieto

Poradnik .pdf można ściągnąć z:
http://uploader.pl/?d=7779A2751
Bardziej przejrzysty i można czytać bez podłączonego neta :P