Invalidando pagine di categoria cache (Pagina1, Pagina2 etc.) quando nuovo post viene aggiunto?
-
02-10-2019 - |
Domanda
Immaginiamo di avere blog con categoria A
. Categoria A
sta avendo 1000 messaggi su 100 pagine. Tutte le pagine vengono memorizzate nei file (ad esempio, cache da template engine Smarty). Sto aggiungendo postale e vuole che sia visualizzato sulla prima pagina immediatamente. Quindi, devo cancellare la cache o invalidate per tutte le 100 pagine di categoria A.
Eliminazione in cache le pagine non è una buona idea, perché possiamo avere troppi file (ad esempio, migliaia di pagine). Penso che invalidare la cache e rigenerante pagina su richiesta è molto modo più efficiente.
Il mio unico pensiero è quello di aggiungere number of posts in category
alla cache id. Quindi, prima dovremmo ottenere numero di posti in categoria (ad esempio, da memcache) e poi verificare se cache versione valida per questo numero.
Tutto sembra a posto e semplice. Ma immaginiamo la situazione quando si aggiunge nuovo post e poi dopo 1 minuto sto togliendo un altro (più vecchia) posta. Numero di posti ancora 1000 e alcune pagine di categoria rimarrà vecchia (se non sono state viste durante questo 1 minuto).
Qual è la soluzione?
PS:. Ci scusiamo per il mio inglese, ma penso che la mia domanda sarà chiaro da parte di persone che hanno già affrontato tale problema
Grazie
Soluzione
Numero di posti non è una buona soluzione, perché quando si modificano alcuni post si vuole aggiornare la cache pure.
Coppia di strategie mi viene in mente:
- Usa momento in cui una modifica è stata fatta come riferimento.
Quando si aggiunge nuovo post (rimosso, modificato) - negozio di corrente timestamp in una categoria, consente di chiamare cache_threshold
. Quando viene richiesta una pagina - controllare quando questa pagina è stato memorizzato nella cache. Se è più vecchio di nostra soglia -. Esigenze di pagina per essere rigenerate
- Passa a oggetto la memorizzazione nella cache, piuttosto che il caching delle pagine.
Invece di caching intere pagine, è possibile memorizzare nella cache ogni singolo post. Se si aggiunge nuovo post (rimosso, a cura) si sarebbe solo rigenerare immediatamente la cache in quanto non è in termini di tempo. Per visualizzare la pagina si avrebbe solo bisogno di prendere una quantità di messaggi memorizzati nella cache e li visualizza.
Questa soluzione richiede più lavoro, ma è più flessibile ed efficace.