留言板

Portlet cache

thumbnail
Tamás Sallai,修改在14 年前。

Portlet cache

Junior Member 帖子: 44 加入日期: 09-9-17 最近的帖子
Miután sikerült rendesen megírnom a portletet, elkezdtem a cacheléssel foglalkozni, mert tapasztalataim szerint nagyon sokat tud számítani áteresztőképességben. A szabvány szerinti cachelés érdekesnek, de elég hatékonynak tűnik(ARP-vel és blockinggal), eddig csak adatbázis alapúval foglalkoztam(ott az adatbázis bizonyos elemeire vannak függőségek felvéve, így ha változik az adat, akkor fog kiesni a portlet).

Próbálgatva viszont belefutottam egy olyan problémába, hogy ameddig nincsen bejelentkezve a felhasználó, addig nem működik a portlet cache. Kicsit utánanézve találtam egy ticketet (http://issues.liferay.com/browse/LEP-5732), valamint a jelenlegi forrásban megnézve is ott volt a ticketben említett kérdéses ellenőrzés. Úgy tűnik, hogy a fejlesztők szerint ez így van jól. Miért lehet ez? Egy információs extranetbe belegondolva a legtöbb felhasználó nem jelentkezik be, ezzel a terhelés nagy részét nem tudja a cache kiszolgálni, pedig nagyon hatékonyan tudná.
thumbnail
Zsolt Balogh,修改在14 年前。

RE: Portlet cache

Expert 帖子: 463 加入日期: 09-3-23 最近的帖子
Szia!

JSR-168 vagy JSR-286 szerinti portletet írtál? Eddig jelenleg csak a JSR-168-as expiration cache-sel foglalkoztam, az viszont nem lesz jó az intranetre, hiszen az felhasználónként cache-li a portletek tartalmát, csak akkor lenne értelme, ha ugyanaz a portlet több oldalon is megjelenne. A 2.0-s API szerinti expiration cache public scope-pal jó lehet a feladatra, de azt így hirtelen nem tudom, hogy támogatja-e a Liferay.

Érdemes megnézni a layout cache-t is. Ez a Liferay-nek egy beépített cache, ha egy oldalon minden portletnek be van állítva a "layout-cacheable" (liferay-portlet.xml), akkor az egész oldalt cache-ből szolgálja ki a liferay a kijelentkezett felhasználóknak addig, amíg változás nem történik az oldalon. Tudom, hogy ez sok esetben nem működhet, de hátha segít a megoldásban.

--
Zsolt
thumbnail
Tamás Sallai,修改在14 年前。

RE: Portlet cache

Junior Member 帖子: 44 加入日期: 09-9-17 最近的帖子
Szia!

Köszi, ezt a layout cachet meg fogom nézni alaposabban a közeljövőben.

Van különbség programozás terén a 2 szabvány között? Tudtommal visszafele kompatibilis, ezért nem kellene viselkedésbeli különbségnek lennie a kettő között. A scopekon gondolkodva kicsit, annak még lenne értelme, hogy privátban a bejelentkezetlen felhasználóknak egyetlen példány cachelődik. Azonban a Liferay egyáltalán nem tárol ismeretlen felhsználókhoz portletet(public scoppal sem).

Kicsit még utánanéztem a kódban, a linkelt ticketben referált CachePortlet helyett mostmár CacheFilter van, bejelentkezetlen felhasználót ugyanúgy kiszűri, viszont nem túl bonyolult annak alapján írni egy olyat, ami az éppen szükséges funkcionalitást megvalósítja, elvégre egy jól tagolt, és mindössze 466 soros programrészről van szó, és az eredeti kódját fel is lehet használni.