Minifikace CSS, JS, HTML pomocí PHP

Uživatelský avatar
RoliD
Administrátor
Příspěvky: 250
Registrován: pát 10. črc 2015 12:47:18

Minifikace CSS, JS, HTML pomocí PHP

Příspěvek od RoliD »

Minifikace zdrojového kódu je vždy prima pokud řešíme každý bajt co se musí přenášet přes komunikační kanál. V době rychlých připojení přes kabelovou síť a přes 4G/LTE internet se minifikace může zdát již překonaná a to hlavně i kvůli tomu, že většina serverů přenášená data "gzipuje za letu".  (Otestovat si výkonost gzipování můžete třeba pomocí http://www.gidnetwork.com/tools/gzip-test.php )
Avšak existují dva základní a jeden vedlejší důvod proč minifikovat:
1. občas někdo na váš web přichází přes zaFUPovanou linku a na těch 0.01-0.016 Mbits co dává lidem např Vodafone se hodí každá sekunda, kterou ušetříte a uživateli se web načte rychleji.
2. má to rád google a lze předpokládat že to je jedním prvkem, které pomůžou webu při SEO. Minifikace je tedy jedním z seo onpage faktorů.
3. vedlejším důvodem je, že díky minifikaci znepříjemníte práci zkoumalům vašeho webu (jen malinko protože Firebug).


Po použití minifikace jsem u výsledného gzipu celé html stránky získal úsporu 1kB na 200kB kódu. Není to moc, ale vzhledem k jednoduchosti implementace to má smysl dělat.

Já mám v oblibě velmi jednoduchý a nepříliš dokonalý minifikační skript:

Kód: Vybrat vše

     //minifikace start
     $cssFiles = array(
      "./css/hlavni.css",
      "./css/responsive.css"
    );

    $buffer = "";
    foreach ($cssFiles as $cssFile) {
      $buffer .= file_get_contents($cssFile);
    }
    $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
    $buffer = str_replace(': ', ':', $buffer);
    $buffer = str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $buffer);
    echo($buffer);
    //minifikace konec

Výhodou je, že výsledek je už poměrně dobře minifikován a za velmi krátký čas.  Pokud chcete, ale opravdu kvalitní minifikaci, tak doporučuji projekt: https://github.com/searchturbine/phpwee-php-minifier/
Běh scriptu trvá sice cca 10ms ale zase je to opravdu důkladné. Spíše bych ale tento script doporučil pro generování kódu někam do cache ze které se už načítá minifikovaný. Pro neustálou minifikaci každé načítané stránky je těch 10-15ms trápení procesoru serveru dost škoda.
Kombinuji tedy oba výše uvedené způsoby. Pro případ: že by projekt zmizel z githubu si tu odložim zazipovaný script:
phpwee-php-minifier-master.zip
(38 KiB) Staženo 782 x

Odpovědět

Zpět na „PHP“