ugrás a tartalomhoz

CI query cache

iddqd · 2012. Júl. 10. (K), 10.37
Sziszatok,

Elsősorban codeigniter-t ismerőktől kérdezném, van e valakinek esetleg valamilyen tippje vagy módszere arra, hogy hogyan lenne érdemes megoldani részleges adatbázis cache -elést. Ritkán változó,
de adatbázisban tárolt elemekről lenne szó, mint pl navigációs elemek stb,
ezeket szeretném betenni.
Alapvetően a problémám, hogy a CI a cache -elést általánosan engedélyezi, azaz ha bekapcsolom, minden lekérdezésre érvényes, extra ki kell kapcsolni amelyiknél nem akarom. Tehát a query -ik 90% -ában külön bele kellene írnom hogy ne tegye. Ki lehet ezt kerülni? Vagy esetleg az én tudásom hiányos és van erre valamilyen módszer?
Köszönöm.
Üdv, Balázs
 
1

Sima cache?

T.G · 2012. Júl. 10. (K), 14.14
Hülye kérdés, de mi lenne, ha ki-be kapcsolnád a db cache-t? És csak ott kapcsolnád be, ahol szükséges, annál a 10%-nál? Majd utána kikapcsolnád, ha már nem...

Bár szerintem egyszerűbb lenne, ha nem az adatbázis lekérések gyorstárazását használnád, hanem az elkészült, komplett navigációs elemeket tárolnád el a cache-ben? http://codeigniter.com/user_guide/libraries/caching.htm
2

Ez nem is olyan hülye kérdés....

iddqd · 2012. Júl. 10. (K), 17.55
Meglepődtem, de a "hülye" kézenfekvő válaszod működik! :DD Csak hogy ne tűnjek annyira hülyének, tisztázzuk, én is ezt szerettem volna, csak olvastam egy leírást róla és abban az állt, hogy globálisan kapcsolható be azaz ha egyszer bekapcsoltam minden query-t cache be tesz és csak azt nem aminél "kivételezek". Ebből született a problémám! De kipróbáltam és működik, bár nem fest túl szépen nekem ez a kódban. A nagyobbik baj az hogy így minden különböző oldallekéréskor ír egy fájlt amik ott tornyosulnak a mappájában és nincsen lejáratuk, hanem magamnak kell extra törölni mindig.

Sima cache:
Ez valóban egyszerűbb lenne és nekem is szimpatikusabb ( -> sokkal több előnye is lenne ), csak hogy, CI -ben nem lehet részlegesen gyorstárazni, csak a komplett outputot menti. De töröm a fejem, hogy lehetne összeokoskodni.

( Szerk: )
You have to specifically exclude queries from cache. You can’t tell the system to only cache queries that you specifically want to cache, you tell the system to cache all queries then you can exclude individual queries with the cache_off() function.
3

Sima cache.

T.G · 2012. Júl. 10. (K), 18.07
Előzőnél a linket rosszul másoltam be, tehát: http://codeigniter.com/user_guide/libraries/caching.html
Van itt objektum cache is, ami szerinte az ilyen esetekben hasznos.
Mentésnél három paraméter van: azonosító, adat és végül lejárat.
Lekérésnél csak az azonosítót kell megadni.
5

Nem volt gond... :)

iddqd · 2012. Júl. 10. (K), 19.41
A link nem volt gond jó viszonyban vagyunk a user guide -al! :) csak az ott összeszedett ismereteimből ( ezt most a cache -re értem ), eléggé ilyen hekmány szagú elképzeléseim születtek ezért gondoltam hátha van valakinek valami receptje, módszere hogyan érdemes ezt kivitelezni. Na majd holnap még jobban beleásom magam abba amit mutattál!
Köszi
4

Cache library?

DonPepito · 2012. Júl. 10. (K), 18.17
Nem használtam még, de Neked lehet, hogy hasznos:

cache library for CodeIgniter
6

Gondoltam én is rá, pont ezt

iddqd · 2012. Júl. 10. (K), 19.43
Gondoltam én is rá, pont ezt nézegettem. De még nem jutottam messzire vele majd holnap belenézek. Köszi
7

Ritkán változó adat

Pepita · 2012. Júl. 17. (K), 00.45
Hülye kérdés: biztosan adatbázisban kell tárolnod? Csak a navigáció miatt jutott eszembe, azt én általában fájlban tárolom (, mert olyan ritkán változik).

A CI ha számodra nem jól cache-el, könnyedén írhatsz egy library-t a konkrét célfeladatra.
Gondolom a Database betöltődik config.php alapján (rendes config-gal), írsz egy osztályt, ami előállítja a menüelemeket, ha kell db-ből, ha még lehet, fájlból. És ezt is betöltöd, a Database után. Én egy session-inicializálást csináltam így: új látogató-e, milyen eszközzel néz, robot, stb.