Quindi il caching, ovviamente, è ciò che più mi confonde in Magento, come per la maggior parte degli altri I sono sicuro. Attualmente uno dei siti su cui lavoriamo è Enterprise e utilizza naturalmente FPC. Il problema è che abbiamo un aggiornamento dell'inventario che viene eseguito ogni 15 minuti. Molti ordini vengono inoltrati al CSR per telefono e attraverso un catalogo in un sistema esterno al di fuori di Magento.Perché il salvataggio Magento della cache di pagine complete sul prodotto crea effettivamente una pagina non memorizzata nella cache e cosa fa l'aggiornamento poiché non è memorizzata nella cache
Ogni 15 minuti viene eseguito uno script per controllare qualsiasi inventario in quel sistema e per vedere se è diverso da quello che è in Magento. Se c'è una differenza, l'inventario viene aggiornato in Magento. Usando tutti i metodi Magento, nessun sql o qualcosa del genere.
Abbiamo sempre avuto problemi di cache e abbiamo provato tutte le ultime tecniche quando escono. L'ultimo che stiamo provando è Redis, e abbiamo avuto un buon successo su altri siti con esso. Tuttavia, stiamo ancora assistendo a un carico pazzesco sul server ed è evidente che le pagine non sono memorizzate nella cache.
Dopo aver scavato nel codice, sembra che dopo ogni salvataggio del modello o del controller del prodotto admin, viene visualizzato per vedere se la cache deve essere invalidata. Sembra che cambiando qualsiasi attributo, almeno lo spazio pubblicitario segnerà l'FPC come se fosse necessario invalidarlo.
io sono confuso su ciò che significa invalidazione, perché un po 'indietro abbiamo avuto una domanda fuori per l'assistenza clienti su qualcosa di simile e questa è stata la risposta
cache della pagina completa arriva a stato invalidato su eventuali modifiche sui prodotti, categorie, CMS anche quando lo stock è diminuito dopo una vendita.
Ora, quando la cache della pagina intera arriva allo stato invalidato, questo non significa che che qualcosa è cambiato sul frontend, tuttavia qualsiasi modifica applicata dopo l'ultimo aggiornamento non verrà mostrato sul frontend.
Tuttavia, se avere la FPC convalidato in ogni momento è un must per la logica di business si potrebbe certamente impostare l'installazione di Magento per aggiornarlo automaticamente attraverso funzionalità cron le volte che si desiderio.
Tuttavia su tutti i test che ho eseguito, su 1.9 e 1.11 Enterprise, appare quando FPC è invalidato, la risposta non viene prelevata dalla cache. Il che è contraddittorio rispetto a quello che hanno detto a riguardo semplicemente non avendo gli aggiornamenti più recenti.
C'è qualcosa che mi manca? Qualcuno ha una buona spiegazione su come funziona l'invalidazione in Magento in modo specifico per FPC o qualsiasi buon link per comprendere appieno il processo e il codice?
Si può provare da soli per qualsiasi pagina che viene memorizzata nella cache della pagina intera. Ma è a mia conoscenza che il metodo processRequest
in /app/code/core/Mage/Core/Model/Cache.php
dovrebbe impostare il contenuto del corpo con la risposta memorizzata nella cache e restituire true se la pagina è memorizzata nella cache.
Per testare andare in qualsiasi pagina, assicurarsi di averlo memorizzato nella cache e restituito true. Entra e modifica un prodotto, nel nostro caso la quantità. Ciò invaliderà FPC. Tuttavia ora quando carichi la pagina che è stata memorizzata nella cache prima che restituisca false in questo metodo e non sia una pagina memorizzata nella cache. Non so se questo è accurato per essere in grado di dire se una pagina è memorizzata nella cache o no, ma è qui che mi conduce la mia indagine. Perfavore, correggimi se sbaglio.
UPDATE: Con ulteriori indagini ho scoperto che quando si salva un prodotto in admin, l'azione di controllo
Mage_Adminhtml_Catalog_ProductController::saveAction()
chiamerà il seguente metodo
Mage::getModel('catalogrule/rule')->applyAllRulesToProduct($productId)
Poi nella classe Mage_CatalogRule_Model_Resource_Rule
, viene chiamato il metodo applyAllRulesForDateRange
che attiva l'evento
catalogrule_after_apply
cui il modulo Pagina intera cache sta osservando e sparando il metodo della cache pulita per il tag FPC. Eliminazione di tutti i record della cache FPC.
Non vedo perché questo è necessario se in precedenza la logica sta cancellando i record FPC che sono legati ai tag di prodotto e di categoria. è un insetto?
so che questo non risponde direttamente alla tua domanda, ma voglio solo far notare che la tua performance non dovrebbe essere peggiore di quella che sarebbe avvenuto se tutti gli ordini fossero stati effettuati tramite Magento, poiché dopo ogni vendita il tuo stock sarebbe diminuito di conseguenza inv alidando la tua cache come fa il tuo cron job. – nachito
Vero, vedo il tuo punto lì. Quindi non ha alcun senso sul motivo per cui la pagina non viene effettivamente memorizzata nella cache quando viene invalidata per la prima volta. –
Questa non è la risposta che si desidera, ma ho parlato con altri sviluppatori Magento, e nessuno di noi ha avuto un vero successo con l'FPC di serie. Ci provoca solo problemi. In genere, si finisce per utilizzare Varnish o qualche altra cache del proxy inverso. Mantenerlo separato dagli interni, che sono già abbastanza complicati. –