Texy! process před nebo po uložení do db

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
medhi
Generous Backer | 255
+
0
-

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
+
0
-

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
+
0
-

Ahoj,

myslím, že je lepší to ukládat do databáze. Ze dvou důvodů:

  1. 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.
  2. 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í?:)

arron
Člen | 464
+
0
-

vlki napsal(a):

myslím, že je lepší to ukládat do databáze. Ze dvou důvodů:

Z hlediska rychlosti kazdopadne ano, ale jak pak chces delat treba editaci toho clanku?

Resenim by napriklad mohlo byt, ze se do db budou ukladat obe verze (cili texy zdroj i html vystup).

vlki
Člen | 218
+
0
-

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.

nAS
Člen | 277
+
0
-

Do databáze patří určitě Texy kód. Pokud záleží na rychlosti, pak se může vygenerované HTML cachovat. Viz např. poznámka od Davida.

Jan Jakeš
Člen | 177
+
0
-

Do databáze rozhodně nepatří HTML kód! IMHO je to jeden z hlavních důvodů, proč vůbec Texy! vzniklo ;)

medhi
Generous Backer | 255
+
0
-

Děkuji všem za vyčerpávající odpovědi, věřím, že se i jiní dozvěděli zajímavé informace.

Ondřej Mirtes
Člen | 1536
+
0
-

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
+
0
-

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
+
0
-

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í.