Minifikace html/latte – řešení

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
uocriota
Člen | 8
+
+1
-

Ahoj.
Už jste někdo řešil minifikaci html, resp. výstupu z latte.
Doporučíte mi nějaký doplněk/script?
Addon zatím neexistuje, resp. žádný jsem neviděl.

Machy8
Člen | 59
+
0
-

Nevím jestli je v Latté nějaká metoda pro kompresy kódu, ale kdyby sis chtěl vytvořit vlastní, musíš si nejspíš vytvořit preprocesor. Ten kód se zmenší před tím, než to zpracuje Latté.

Příklad z Macdomu

<article>
	<h2 class="articleTitle break-all">
		{$article->title}
	</h2>
</article>

Po kompresy

<article><h2 class="articleTitle break-all"><?php echo Latte\Runtime\Filters::escapeHtml($article->title, ENT_NOQUOTES) ?></h2></article>

Při vytváření svého
Volání v BasePresenteru

protected function createTemplate()
{
    $template = parent::createTemplate();
    $template->getLatte()->setLoader(new Compressor($this));
    return $template;
}

Soubor Compressor.php – třída musí dědit Latte\Loaders\FileLoader

class Compressor extends Latte\Loaders\FileLoader {

	public function getContent ($file)
	{
		$content = parent::getContent($file);
     	// Zpracování obsahu - odstranění zalomení řádků, tabulátorů, mezer > 1...

		return $compiled;
	}
};

Editoval Machy8 (14. 3. 2016 16:29)

CZechBoY
Člen | 3608
+
+2
-

Určitě je účinnější minifikovat až výsledné html. Pokud ve zdrojáku mezery nebudou a vypíšou se tam třeba z databáze tak to není úplná minifikace.

Lepší by asi bylo udělat si vlastní response poděděnou od TextResponse.

David Matějka
Moderator | 6445
+
+6
-

Minifikace html neprinese zadny vyrazny benefit, mnohem lepsi (a dostacujici) je gzipovani vystupu. Zkusil jsem vzit titulku idnesu
bez gzipu: 93kB pred minifikaci, 79kB po minifikaci.
s gzipem: 29kB neminifikovany, 27kB minifikovany