Teoretická otázka: MemCached – Controller nebo Model?
- maarlin
- Člen | 207
Řeším menší dilema – používám na kešování dat tahaných z databáze MemCached. Ukládám stránku po stránce jako objekty. Co spíše mě trápí, je otázka, kam s celou „kešovací nadstavbou“.
Cítím, že by to chtělo být v modelu, ovšem kdybych to tak udělal, bude mě to pak neskutečně omezovat, protože z modelu (= z databáze nebo MemCache Storage) už půjde hotový, netříditelný výstup.
Můžu pak docela zapomenout na nějaké pohodlné volání
->where()
a podobných šikovných věcí přímo
v Controlleru…
Nemáte někdo lepší nápad, jak to řešit?
PS: Odpusťte si prosím diskuzi o tom, co je a není Controller/Presenter/View.
- Tharos
- Člen | 1030
Omezuje-li Tě cache v modelu, tak ji do něj určitě nedávej. :) IMHO ani není součástí MVC/MVP dogma to, že cache patří výhradně do modelu. Cache se dá podle mě s čistým svědomím použít všude tam, kde to má nějaký význam. Já například běžně používám cache na úrovni front controlleru (konkrétně v routeru pracujícího s databází).
Nevím, jakou detailně má Tvá aplikace architekturu, ale je-li v ní samotná stránka z hlediska OOP reprezentovaná presenterem (k čemuž Nette navádí), cache celé stránky pak IMHO logicky patří do „P“ vrstvy.
Editoval Tharos (27. 10. 2010 23:14)
- PJK
- Člen | 70
To jde o to, co chceš kešovat. Podle parametrů si můžeš vybírat od cache databázového serveru až po reverzní http cache před celým systémem :).
Pro nejrůznější modifikace redakčních systému je naprosto dostačující cachování v presenteru ve stylu https://doc.nette.org/cs/caching.