2010-07-05 1 views
6

Ho letto questo link: -Come funziona la memorizzazione nella cache di CodeIgniter?

http://codeigniter.com/user_guide/general/caching.html

È scritto che: -

When a page is loaded for the first time, the cache file will be written to your system/cache folder

e che siamo in grado di memorizzare nella cache una vista da $this->output->cache(60);. Ma come funziona davvero? Cosa succede se regolarmente i miei utenti continuano ad aggiornare e cancellare i record a causa della quale la visualizzazione cambia molto spesso. Mostrerà i dati modificati? o la cache riporterà i vecchi dati obsoleti? (prima degli inserimenti e degli aggiornamenti)? Se gestisce automaticamente e porta nuovi dati dal database, qual è lo scopo di specificare i minuti nella funzione cache?

Grazie in anticipo :)

risposta

14

caching del CodeIgniter modo in cui funziona in generale è questo:

Una richiesta di pagina è fatta. Codeigniter (prima che gran parte del framework sia stato persino caricato) esegue un hash dell'URL corrente e se trova quel nome di file nella directory della cache, lo serve.

L'unico modo per ottenere nuovi dati è quello di eliminare manualmente i file. Quando codeigniter non trova il file dall'hash generato, crea dinamicamente la pagina.

L'implementazione di Codeigniter si chiama caching a "pagina intera" e, come tale, è limitata nella sua utilità. C'è una libreria di cache parziale che ho cercato da Phil Sturgeon qui: http://philsturgeon.co.uk/code/codeigniter-cache

Onestamente, per la maggior parte dei progetti, il caching di una pagina intera non è poi così utile. In effetti, i progetti di cui ho bisogno per il caching a tutta pagina non li lascio nemmeno a codeigniter (lo lascio al webserver: è molto più veloce).

Immagino che quello che stai cercando sia un metodo di memorizzazione nella cache parziale; la maggior parte delle persone preferirebbe questo. Cerca in APC se stai utilizzando un singolo server o Memcached se hai più server.

Buona fortuna.

7

Ma come in realtà funziona?

Se esiste una versione cache meno recente del tempo di cache, la versione memorizzata nella cache verrà emessa.

Mostrerà i dati modificati?

Alla fine sì, ma con un ritardo di $ cache_time

E se regolarmente i miei utenti mantengono l'aggiornamento e l'eliminazione di record a seguito della quale visualizzare i cambiamenti molto spesso.

ridurre il tempo di cache o non utilizzare la cache a tutti

+9

Il down-voting senza commento è un comportamento sucky – Pete