Magento Cache - confusione su Varnish, Redis, APC, Memcache


34

Sto cercando di migliorare le prestazioni di Magento (prima o poi "MageDev" ha colpito questo punto :)

Ho fatto alcune ricerche e ho trovato molte guide valide, ma non omogenee.

Quello che ho ottenuto è che:

  • MemCache o Redis sono sistemi di cache generici, memorizzano nella cache i dati e possono essere integrati direttamente con Magento ( local.xml )
  • APC è una cache per il codice php stesso che può essere integrato solo a livello di server.
  • Varnish è un proxy inverso, memorizza nella cache la risposta può essere integrata solo a livello di server. (c'è un'estensione per Magento, trementina, ma non sono sicuro di cosa faccia esattamente)

Dopo tutta questa buona lettura, sono ancora un po 'confuso su quale dei suddetti sistemi di cache è possibile utilizzare in combinazioni, per EX:

  • MemCache + APC?
  • Redis + APC?
  • posso aggiungere Varnish a una delle configurazioni sopra?

Giusto per essere chiari, la domanda non è su come configurare Magento o il server, ma quali sono le possibilità consentite e un po 'di spazio su come mescolare i sistemi di cache. (a parte questo se qualcuno può venire con una buona raccomandazione lo apprezzerei grazie.)


Puoi usare insieme FPC + vernice + trementina? grazie
Bruno Alvarenga il

La trementina serve a perforare la cache della vernice. Come in, la trementina viene utilizzata per rimuovere la vernice.
siliconrockstar,

Risposte:


48

TL; DR - Su MageStack utilizziamo Varnish, Redis (cache), Redis (sessioni) e Eaccelerator / Zend OPCache (a seconda della versione di PHP)

Ne hai già capito la maggior parte.

Il backend della cache, l'archivio sessioni, la cache opcode, la cache a pagina intera e la cache proxy inversa sono completamente diversi.

Puoi usare diverse tecnologie per tutti e puoi usarle TUTTE contemporaneamente (incluso Vernice e un FPC)

Backend della cache

  • File (core) Predefinito
  • Memcache (Core)
  • APC (Core)
  • Redis (<1.9 per gentile concessione di Colin Mollenhour)
  • MongoDB (modulo per gentile concessione di Colin Mollenhour)
  • Rubic (modulo per gentile concessione di Daniel Sloof)

È possibile utilizzare solo un backend della cache.

Contrariamente alla credenza popolare, l'uso di una cache basata sulla memoria non migliorerà le prestazioni. Ma supererà alcuni errori fatali nella cache basata su file predefinito di Magento.

Al momento di scrivere questo messaggio, Redis è la mia raccomandazione.

Negozi di sessioni

  • File (core) Predefinito
  • Memcache (Core)
  • Redis (<1.9 per gentile concessione di Colin Mollenhour)
  • MongoDB (modulo per gentile concessione di Colin Mollenhour)

È possibile utilizzare solo un archivio sessioni.

Contrariamente alla credenza popolare, l'uso di un archivio di sessioni basato sulla memoria non migliorerà le prestazioni.

Al momento di scrivere questo messaggio, Redis è la mia raccomandazione.

Cache OpCode

  • APC
  • XCache
  • Eacceleratore (PHP <5.4)
  • Zend OPCache (PHP> 5.4)

Puoi effettivamente installare più cache del codice operativo, ma non è raccomandato, né mi aspetto di vedere alcun guadagno.

I miei consigli sono tra parentesi.

Non è necessario installare alcun modulo per sfruttarlo.

Cache proxy inversa

  • Vernice
  • nginx
  • Apache
  • … e molti altri

È possibile utilizzare più proxy inversi e, nel contempo, è complesso e incline all'allungamento della cache, può avere dei meriti (ad es. Per impedire lo stampaggio durante lo svuotamento della cache).

Usane uno quando necessario (es. Non per velocizzare un sito lento, ma per ridurre l'utilizzo delle risorse in un sito veloce).

Per sfruttare un proxy inverso, ha bisogno sia dell'abilitazione lato server sia di un modulo per Magento.

Il motivo del modulo è quello di aiutare a controllare la logica di memorizzazione nella cache (ad es. Per dire alla cache cosa dovrebbe e non dovrebbe essere memorizzato nella cache) e anche a gestire il contenuto della cache (ad es. Per attivare l'eliminazione della cache).

Non lo consiglio a nessuno a meno che tu non abbia una comprensione totale di ciò che stai facendo. Una configurazione errata dei proxy inversi può rompere le informazioni di intestazione, può causare la perdita della sessione, la condivisione della sessione, il contenuto non aggiornato, applicare limiti aggiuntivi per caricare tempo / buffer, consumare risorse aggiuntive ecc.

Cache a pagina intera

  • EE FPC
  • ... molti altri (tramite moduli)

Usane uno quando necessario (es. Non per velocizzare un sito lento, ma per ridurre l'utilizzo delle risorse in un sito veloce).

Contrariamente alla credenza popolare, puoi (e dovresti) usare un FPC insieme a una cache proxy inversa. I due risolvono problemi diversi e hanno capacità diverse.

Gli FPC possono sfruttare più intelligenza, perché hanno accesso diretto alla sessione degli utenti e al core di Magento, mentre un proxy inverso non è a conoscenza dell'applicazione (è abbastanza stupido nel modo in cui funziona) - quindi i due si completano a vicenda, non competono tra loro .

Vale a dire. Non pensare a Vernice o FPC, pensa a Vernice e FPC.


1
Qualche idea su mod_pagespeed? tra l'altro, risposta chiara e chiara grazie
Fra

2
Un sacco di consigli. Ma lo scopo di PageSpeed ​​è ben oltre la domanda originale (e in gran parte non correlata allo stesso Magento). Ci sono alcuni consigli sul nostro KB qui, sonassihosting.com/help/magestack/…
Ben Lessani - Sonassi,

Chiara separazione tra i diversi livelli di cache che possono essere utilizzati con Magento. Soprattutto la raccomandazione. Tuttavia, non sembri raccomandare di usare la cache di vernice in contrasto con la raccomandazione di documentazione magento riferirsi a - devdocs.magento.com/guides/v2.3/config-guide/varnish/…
Pandurang Patil

@PandurangPatil Sai che la mia risposta è stata di 8 anni fa - quando Magento 2 non esisteva ... Da qui i miei commenti "Al momento della stesura". Se Magento 2 fosse esistito quando è stata posta questa domanda, la mia risposta sarebbe stata diversa.
Ben Lessani - Sonassi,

@ BenLessani-Sonassi Non ho prestato attenzione alla data. Ad ogni modo, consiglieresti di usare la cache di Varnish nel contesto odierno con magento 2.x?
Pandurang Patil,

8

Vorrei scegliere Redis + APC con Varnish in cima.

"Perché Redis" chiedi? Leggi questa eccellente risposta SO . Redis sostanzialmente sostituisce il sistema di memorizzazione nella cache standard basato su file di Magento. Poiché Redis è più veloce, ti darà alcuni miglioramenti sulla velocità.

La vernice in realtà non ha molto a che fare con i meccanismi interni. Viene messo in primo piano e memorizza nella cache il contenuto statico in modo che non raggiunga mai Magento come richiesta. Ad eccezione delle parti forate che sono.

Mentre Varnish si concentra solo sulla cache del frontend, Redis accelera anche gli altri tipi di cache come le cache EAV e Configuration.

Opzionalmente puoi dare un'occhiata ad alcune estensioni della cache a pagina intera per Magento invece di Varnish. Sebbene non sia così veloce, è generalmente più facile da implementare e non si basa su software aggiuntivo (come Varnish)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.