Teoretická otázka: MemCached – Controller nebo Model?

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

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

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

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.