Kde pouzit javascript ?
Javascript v suvislosti s browserom ma tu istu vlastnost ako CSS a to v tom ze browser si ho uchovava v pamati. Z toho dovodu je dolezite vkladat ho do html ako externy subor. Browser akurat len skontroluje ci ho videl (nazov suboru) a ak ano , jeho kod pouzije zo svojej pamate. Casto krat javascriptovy kod ktory mame pouzity sluzi na fukciu ktora nastava az po uplnom nacitani stranky. Prave z toho dovodu pokial to nie je nevyhnutne, vkladame javasciptovy kod na co najnizzsie miesto dokumentu.(priklad kod Google Analytics).
Ako optimalizovat Javascript ?
Je viac sposobov ako docielit optimalizaciu javascriptu a vedu sa o tom polemiky. Poniektori hovoria ze staci prepisat koncovku na php a ulozit ho ako php subor. Ini zas tvrdia ze je lepsie komprimovat. Z osobnej skusenosti viem ze oba sposoby su pouzitelne a pokial je k tomu pripojena kompresia Gzip , vysledok je pozadovany. Prepisanie koncovky nie je problem pre nikoho, komprimovanie je uz narocnejsie.
Ako vyzera skomprimovany javascript a na co davat pozor.
V mojom clanku Ako vytvorit videogaleriu pomocou AJAXU su k dispozicii aj zdrojove kody. Jeden z pouzitych javascriptov pred komprimaciou vyzeral takto . Tento druhy subor je uz po komprimacii. Ake su medzi nimi rozdiely? Jedna sa o ten isty kod, s tym ze v ukazke cislo 2 boli odstranene vsetky biele (cize volne) miesta v kode,komentare a tak isto bolo uskutocnene laicky povedane zdruzenie funkcii. Prvy subor ma velkost 5.8 KB a druhy uz len 2.44 KB cize bolo dosiahnute znizenie objemu okolo 60%. Problemom druheho suboru vsak je ze je prakticky necitatelny a preto pred akoukolvek komprimaciou si treba povodny subor bezpecne ulozit. Treba to urobit aj z toho dovodu, ze komprimacia obcas moze znicit uplne funkcionalitu daneho javascriptu.
Ako skomprimovat javascript
Jeden z najlepsich nastrojov ktory vymaze biele miesta, komentare je jsmin . Takisto mam dobre skusenosti s tymto packerom. No a samozrejme jeden z priekopnikov a najlepsich je Dean Edwards Packer Pre profesionalov k testovaniu je vynikajucim nastrojom JsUnit Unit Testing Framework.
Ako spravne skombinovat komprimovany javascript so serverovym Gzip kodovanim a MOD DEFLATE ?
Najprv .htaccess subor
# Kompresia
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip
#Header append Vary User-Agent
# DeflateCompressionLevel 9
# DeflateFilterNote Input instream
# DeflateFilterNote Output outstream
# DeflateFilterNote Ratio ratio
ExpiresActive On
ExpiresByType application/x-javascript A2592000
ExpiresByType application/x-Shockwave-Flash A2592000
No a na zaciatok prveho suboru aplikacie uz znamy kod:
<?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start(); ?>
Na zaver iba tolko, ze nastrojov ohladne komprimacie je urcite viac, uvadzal som tie s ktorymi mam dobre skusennosti, pred akoukolvek komprimaciou si vsak zalohujte povodny javascriptovy kod.