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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top