Texy! process před nebo po uložení do db
- medhi
- Generous Backer | 255
Ahoj, již delší dobu přemýšlím, zda text prohnat Texy! před uložením do databáze nebo ukládat text do databáze v Texy! a prohánět ho až při čtení? První způsob je asi rychlejší, ale zabere více místa, druhý zabere méně místa, ale jak je pak rychlé při každém zobrazení stránky processovat celý výstup z db? Jak to děláte vy?
Díky!
- Honza Marek
- Člen | 1664
medhi napsal(a):
ale jak je pak rychlé při každém zobrazení stránky processovat celý výstup z db?
Načtení stránka je pak dle mých zkušeností podle nette profileru zhruba o čtvrtinu pomalejší.
Jak to děláte vy?
Udělal jsem si šablonový helper cachedTexy.
- vlki
- Člen | 218
Ahoj,
myslím, že je lepší to ukládat do databáze. Ze dvou důvodů:
- Při zobrazování je většinou potřeba, aby se to vygenerovalo co nejdřív. Při ukládání je to jedno.
- Kdyby někdy v budoucnu bylo potřeba změnit nástroj pro převod do html, který by nebyl kompatibilní s texy, tak kvůli tomu nebudeš muset měnit staré zdrojové texty
Takže osobně to ukládám do db:) A jak to dělají ostatní?:)
- vlki
- Člen | 218
Ano, ukládám zdroj i výstup.
Odbočím ještě. Na Poslední sobotě jsme řešili s Honzou Šťastným problém, kdy je záměr mít možnost editovat článek jak pomocí Texy, tak pomocí nějakého wysiwygu (FCK, TinyMCE).
Jediné co mne napadlo bylo nějaké verzování článku a provazování jednotlivých částí html se zdrojem. Určitě by to ale vyžadovalo nějaký nástroj na převod HTML → Texy. Neřešil někdo již toto?
Udělal jsem si šablonový helper cachedTexy.
Hm, to také není špatné. Asi lepší řešení při větších objemech textu.
- Ondřej Mirtes
- Člen | 1536
Otázka je, jestli se cachování Texy textu vůbec vyplatí… chtělo by to nějaká měření. Věřím, že třeba pro 50 příspěvků/stránka na fóru ano, ale pro zobrazení jednoho/pár článků ne…
Honza M.: Neukážeš nám ten cachedTexy
helper? :)
- kravčo
- Člen | 721
Ja s textami vygenerovanými pomocou Texy pracujem tak, že ukladám zdroják a kešujem výsledné html. Nepoužívam helper, kešujem už na úrovni objektu, ktorý článok reprezentuje. Zjednodušene sa dá povedať, že využívam Nette-properties na kešovanú property:
class Article
{
private $id;
private $source;
private $content;
public function __construct($dbrow)
{
$this->id = $dbrow->id;
$this->source = $dbrow->source;
}
public function getSource()
{
return $this->source;
}
public function getContent()
{
if ($this->content === NULL) {
$cache = Environment::getCache('Texy.Article');
if (!isset($cache[$this->id])) {
$cache[$this->id] = MyTexy::process($this->source);
}
$this->content = $cache[$this->id];
}
return $this->content;
}
}
$article = new Article($dbrow);
dump( $article->source );
dump( $article->content );
Doterajšie riešenie (zdroják v db, cache na disku) sa mi zdá zbytočne pomalý a mám v pláne (a v hlave) ideu, ktorá bude zdroják + cache html držať spoločne, s cieľom znížiť počet miest, ku ktorým treba pristupovať.
LastHunter napsal(a):
Otázka je, jestli se cachování Texy textu vůbec vyplatí… chtělo by to nějaká měření. Věřím, že třeba pro 50 příspěvků/stránka na fóru ano, ale pro zobrazení jednoho/pár článků ne…
Myslím, že nekešovanie výstupu Texy je čisté vyhuľovanie servera…
Keby nebolo Nette\Caching
tak sa tomu až tak nedivím, no s ním
sú to 3 riadky.
- Honza Marek
- Člen | 1664
LastHunter napsal(a):
Otázka je, jestli se cachování Texy textu vůbec vyplatí… chtělo by to nějaká měření.
Už jsem psal výš, jeden blbej článek zvýší čas generování stránky v Nette o pětinu až čtvrtinu ;-)
Honza M.: Neukážeš nám ten
cachedTexy
helper? :)
Asi ne. Jako funguje, ale úplně se mi nelíbí.