CurlyBracketsFilter – odstranění whitespace při production módu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Ondřej Mirtes
Člen | 1536
+
0
-

Ahoj,
už to tu někde na fóru padlo – co přidat do CBF volitelně zapnutelnou feature, která by na ostré verzi odstraňovala přebytečné entery, mezery a tabulátory v HTML?

Asi by nebyl problém napsat si vlastní filtr a ten poté zaregistrovat do šablony, jenže v takovém případě se nejspíše nedostanou ty jeho úpravy do cache a odstraňování whitespaces by probíhalo při každém načtení, což si nějaký výkon vezme a není to optimální. Proto to začlenění do CBF.

redhead
Člen | 1313
+
0
-

LastHunter napsal(a):

Asi by nebyl problém napsat si vlastní filtr a ten poté zaregistrovat do šablony, jenže v takovém případě se nejspíše nedostanou ty jeho úpravy do cache a odstraňování whitespaces by probíhalo při každém načtení, což si nějaký výkon vezme a není to optimální. Proto to začlenění do CBF.

Proč by se to nemělo cachovat?? Když jsem vytvářel vlastní filter tak se mi to cachovalo.

Třída Template se cachuje sama o sobě. Není potřeba žádná kontrola nad filterem.

Jinak zprasení HTML kódu do jednoho řádku nejsem zrovna zastánce :)

Editoval redhead (24. 8. 2009 16:05)

Ondřej Mirtes
Člen | 1536
+
0
-

Aha, tak to jo, v tom případě bych se o ten filtr pokusit mohl :)

HTML kód do jednoho řádku – na development serveru samozřejmě ne, tam potřebuješ přehlednost, ale na ostrém serveru bych všechno dával do jednoho řádku (HTML/CSS/JS) – znepřehledníš to tak pro případného zloděje, ulehčíš přenosové lince i parserům prohlížečů.

Honza Kuchař
Člen | 1662
+
0
-

Jinak zprasení HTML kódu do jednoho řádku nejsem zrovna zastánce :)

Když to člověk skládá po kouskách z šablon, tak to taky nevypadá zrovna nejlépe. Na druhou stranu, na produkčním serveru proč ne.

Honza Marek
Člen | 1664
+
0
-

Existuje na to helper strip, který se dá zaregistrovat jako filtr. Ale na použití je potřeba dávat pozor, protože to odstraňuje odentrování i třeba v javascriptech a existenci komentářů do konce řádky to nijak neřeší :-D

Ondřej Mirtes
Člen | 1536
+
0
-

Honza M. napsal(a):

Existuje na to helper strip, který se dá zaregistrovat jako filtr. Ale na použití je potřeba dávat pozor, protože to odstraňuje odentrování i třeba v javascriptech a existenci komentářů do konce řádky to nijak neřeší :-D

Zkusil jsem ho zaregistrovat:

$template->registerFilter('TemplateHelpers::strip');

A místo vykreslení layoutu jsem do prohlížeče dostal toto (jakoby se CBF vůbec nedostal ke slovu):

{block #content} {!_'content'}

…což je obsah mé Default.default.phtml šablony.

Navíc si myslím, že tento helper by mi zlikvidoval i texty, které mám přímo v šabloně apod.

Honza Marek
Člen | 1664
+
0
-

Kdysi to šlo…

kravčo
Člen | 721
+
0
-

LastHunter napsal(a):

Zkusil jsem ho zaregistrovat:

$template->registerFilter('TemplateHelpers::strip');

CurlyBracketsFilter sa registruje automaticky v metóde onPrepareFilters(), nemôže volanie registerFilter() spôsobiť zlé poradie filtrov?

David Grudl
Nette Core | 8218
+
0
-

Filtr je nutné registrovat takto:

presenter:

	public function templatePrepareFilters($template)
	{
		parent::templatePrepareFilters($template);
		$template->registerFilter('Nette\Templates\TemplateHelpers::strip');
	}

strip() jsem vám upravil, aby ignoroval značky <script>, <pre> a <textarea>, nicméně stejně z toho neočekávejte reálnou úsporu větší než 10 %.

Ondřej Mirtes
Člen | 1536
+
0
-

Super! Funguje dle očekávání :)

Hlásím ale bug: helper strip pokazí velké Š. Všechna ostatní písmena projdou v pohodě, jen to velké Š ne.

V šabloně:

ÁĚÉČŘŠŽÝÍŚ

Výstup:

ÁĚÉČŘ� ŽÝÍŚ
David Grudl
Nette Core | 8218
+
0
-

fixed