Minifikace html před odesláním
- Ellesmess
- Člen | 21
Zdravím,
něco jsem zkoušel najít, ale nějak jsem se nedokázal poprat se
sendResponse :(
obecně řeším kompresi výstupu HTML. Zajímá mě, zda lze nějak
„minify“ výsledný HTML (tzn. po renderu/sestavení šablon)?
- jak zachytit buffer před odesláním nějakým slušným způsobem?
- lze „bezpečně“ obsah minifikovat? (odstranění mezer, new-line, …)
Předem děkuji za odpovědi,
Ellesmess
- enumag
- Člen | 2118
Imho by bylo lepší použít mod_pagespeed.
Bezpečné to není kvůli tagům <pre> a <textarea>.
Editoval enumag (12. 4. 2013 16:47)
- enumag
- Člen | 2118
No primárně bych se staral zda ti lighttpd gzipuje výstup. Pokud ano, je otázka zda má vůbec smysl tohle řešit – zrychlíš přenos dat, ale musel bys použít output buffering a při každém požadavku ty mezery mazat nějakým regulárním výrazem takže zpomalíš generování HTML. Ve výsledku by to mohlo být i pomalejší než původně.
- Glottis
- Člen | 129
enumag napsal(a):
No primárně bych se staral zda ti lighttpd gzipuje výstup. Pokud ano, je otázka zda má vůbec smysl tohle řešit – zrychlíš přenos dat, ale musel bys použít output buffering a při každém požadavku ty mezery mazat nějakým regulárním výrazem takže zpomalíš generování HTML. Ve výsledku by to mohlo být i pomalejší než původně.
presne to me taky napadlo. ma vubec nejaka minifikace smysl? zkousel to nekdo merit? treba u js, css? i u nette se mi nejak nezda ze minified verze ma nejaky dopad na vykon. spis se mi to zda horsi nez nette po souborech. ale nic jsem nemeril :)
- Ellesmess
- Člen | 21
Minifikace by čistě hypoteticky mohla mít smysl v případě rychlosti zpracování u klienta…? Je to spíše úvaha, na druhou stranu, pokud je smyslem jen odstranit mezery (případně další drobné úpravy), možná to až takový smysl nemá.
Věc B jsou pak ještě naši mobilní operátoři, že? 1GB dat není mnoho (viz. Davidova hláška o „neomezenosti“ 600MB od Vodafonu) a když pošlu místo 42kB jen 30kB, v koncovém důsledku je to šetrnější. A i kdyby nebyl argument FUP, náhodně se vyskytující 3G a pomalé připojení by být mohlo :)…
- enumag
- Člen | 2118
Ellesmess: Jasně, na mobilní verzi to z důvodů které jsi uvedl může mít význam. Ovšem pokud jde o desktopovou verzi tak by ty důsledky pro věšinu uživatelů mohli být spíše negativní.
Glottis: Tohle je OT, ale odpovím ti. O minifikaci HTML/CSS/JS se zde bavíme kvůli snížení množství přenášených dat ze serveru k uživateli. Minifikace Nette má úplně jiný smysl – rychlejší načítání frameworku PHPkem. Práce s filesystémem není zrovna levná takže je určitě rychlejší načítat jeden soubor než jich načítat 150 (nebo kolik jich Nette má). Na druhou stranu takto načteš i ty části Nette které nepotřebuješ a PHP tyto části interpretuje zbytečně. Má to tedy tím větší význam, čím větší část frameworku tvá aplikace používá. Pokud jde o výsledný efekt tak hraje hodně velkou roli to, zda máš nainstalované něco jako Zend Optimizer nebo xCache. Zda to někdo měřil v praxi nevím.