PrestaShop Performance: Ein dynamisches Shop-Caching auf die richtige Art
PrestaShop gibt Ihnen einen seriösen Shop aus der Box, und eine ernsthafte Menge an Arbeit pro Seite, um damit zu gehen. Wie man es schnell macht, ohne die dynamischen Bits zu brechen.
PrestaShop montiert jede Seite aus PHP, Smarty-Vorlagen und einer geschäftigen Datenbank, weshalb große Kataloge träge werden. Cache den Katalog – Zuhause, Kategorien, Produkte – am Rand und umgehen Sie den Cache, wenn PrestaShops Session-Cookie vorhanden ist, damit Wagen, Checkouts und Kundenkonten live bleiben. Achten Sie auf Multi-Währung und mehrsprachige Geschäfte, die den Cache-Schlüssel benötigen, um diese Dimensionen zu berücksichtigen.
PrestaShop ist eine richtige E-Commerce-Plattform: Multi-Store, Multi-Währung, Multi-Sprache, und ein Modul-Ökosystem, das Sie gerne dreißig Dinge installieren lassen. All diese Fähigkeit hat eine Kosten, und die Kosten in der Regel zeigt sich, sobald der Katalog ein paar hundert Produkte und jemand fragt, warum die Kategorie Seiten zwei Sekunden dauern.
Wohin die Zeit geht
Jede PrestaShop Seite wird auf Anfrage zusammengestellt. PHP boots, die Smarty Template Engine rendern, Module laufen ihre Hooks, und die Datenbank wird abgefragt — oft stark, weil geschichtete Navigation, Preisregeln, Lager und Kombinationen alle vor der Seite aufgelöst werden müssen kann gezogen werden.
Die spezifischen Dinge, die zu verletzen neigen, in etwa der Reihenfolge erscheinen sie als ein Geschäft wächst:
- Layered Navigation auf großen Kategorien. Facettiert Filtern ist teuer, und die Abfragen wachsen mit Ihrem Attribut zählen.
- Produktkombinationen. Ein Produkt mit fünf Größen und sechs Farben ist dreißig Kombinationen zu lösen, jedes mit seinem eigenen Preis und Lager.
- Besondere Preisvorschriften. Jeder angezeigte Preis kann Katalogpreisregeln erfordern, die nach der aktuellen Kundengruppe, Währung und Land bewertet werden.
- Modul-Hooks laufen auf jeder Seite. Module registrieren Hooks, die Feuer, ob die Seite verwendet sie, und niemand überprüft sie.
- Bildregeneration. Thumbnail-Regeneration nach einem Themenwechsel ist eine bekannte Möglichkeit, einen Server stundenlang zu besetzen.
Nichts davon ist ein Fehler. Es ist das, was PrestaShop fähig macht. Es ist nur Arbeit, die für jeden Besucher wiederholt wird, einschließlich der tausendste Besucher einer Produktseite, die sich seit März nicht geändert hat.
Der Split, der das Caching sicher macht
| Seite | - Das war's? | Anmerkung |
|---|---|---|
| Homepage, Kategorien, Produktseiten | Nein | Der Großteil Ihres Verkehrs |
| CMS-Seiten, Hersteller- und Lieferantenlisten | Nein | Seltene Veränderung |
| Suchergebnisse | Normalerweise | Kurze TTL; normalisieren Sie den Abfrageparameter |
| Layered Navigationsergebnisse | Vorsichtig | Cachebar, aber achten Sie auf die Anzahl der Filterkombinationen |
| Warenkorb und Kasse | Niemals | Persönlich nach Definition |
| Mein Konto, Bestellhistorie, Adressen | Niemals | Personenbezogene Daten |
| Alles unter dem Admin Ordner | Niemals | Umfahrung vollständig |
Den Bypass nach rechts bringen
Der ganze Trick ist erkennen, wenn ein Besucher "in Sitzung" ist, anstatt nur zu surfen. PrestaShop setzt ein Session-Cookie — namens PrestaShop- gefolgt von einem Hash, der für Ihre Installation einzigartig ist — sobald ein Käufer einen Wagen oder Logs in hat. Umgehen Sie den Cache, wann immer das Cookie vorhanden ist, und alles funktioniert: anonyme Browser bekommen zwischengespeicherte Seiten, jeder mit einem Warenkorb bekommt eine Live-eine.
Zwei Details, die Leute herausholen:
Umgehen Sie das Cookie nicht nur in irgendeiner Form. Einige Konfigurationen setzen ein Session-Cookie beim ersten Besuch unabhängig von Aktivität, was bedeuten würde, dass niemand jemals eine zwischengespeicherte Seite bekommt und Ihr Trefferverhältnis fast Null sitzt, während Sie sich fragen, was schief gelaufen ist. Prüfen Sie, ob Ihre Installation dieses Cookie für anonyme Besucher aufgibt, bevor Sie sich auf dessen Anwesenheit verlassen.
Entfernen Sie die Tracking-Parameter. PrestaShop-Shops ziehen eine Menge Kampagnenverkehr, und ?utm_source= Varianten fragmentieren Ihren Cache schlecht. Entfernen Sie ihn aus dem Cache-Schlüssel.
Die multi-currency und multi-language Falle
Dieser ist speziell für PrestaShop und es ist mehr Aufmerksamkeit wert, als es normalerweise bekommt, weil es falsch zu machen zeigt einen dänischen Käufer Preise in Euro - oder noch schlimmer, zeigt eine Großkundengruppe Einzelhandelspreise.
PrestaShop löst Sprache, Währung und Kundengruppe pro Anfrage, häufig von Cookies. Wenn Ihr Cache-Schlüssel diese Dimensionen nicht enthält, füllt der erste Besucher, der eine Seite anfordert, den Cache mit deren Version und jeder danach erhält es.
Der Fix ist entweder, die relevanten Cookies in den Cache-Schlüssel aufzunehmen – so erhält jede Währung und Sprache eine eigene gecached Kopie – oder verschiedene URLs pro Sprache und Währung zu verwenden, was für SEO sowieso besser ist. Auch Multi-Shop-Installationen benötigen die Shop-Dimension im Schlüssel.
Testen Sie das bewusst, bevor Sie leben. Öffnen Sie den Shop in einem Browser, wechseln Sie die Währung, dann öffnen Sie ihn in einem frischen Inkognito-Fenster und überprüfen Sie, welche Währung Sie erhalten. Es dauert neunzig Sekunden und es fängt den einzigen schädlichsten Caching-Fehler, den ein PrestaShop machen kann.
Säubern, wenn sich die Dinge ändern
Ein Cache-Katalog muss ungültig werden, wenn sich der Katalog ändert. Preis-Updates, Bestandsveränderungen und neue Produkte alle benötigen die betroffenen Seiten gesäubert, oder Käufer sehen die Preise von gestern - das ist ein Kunden-Service-Problem und, je nachdem, wo Sie handeln, möglicherweise ein legales.
Praktischer Ansatz: die spezifische Produkt-URL und ihre Kategorie Seiten auf Produkt sparen, reinigen weitgehend nach einem Massenimport, und halten Produkt-Seite TTLs bescheiden — eine Stunde statt ein Tag — so dass alles, was eine Säuberung verpasst Korrigiert sich schnell. Wenn Sie Live Stock zählt anzeigen, entweder schließen Sie dieses Fragment von der Seite aus oder akzeptieren Sie, dass Stock Display Ihr TTL verzögert.
Und die Bilder
Ein PrestaShop Shop lebt und stirbt auf Produktfotografie, und Bildgewicht ist in der Regel die größte einzelne Komponente der Seitengröße. Umwandeln in WebP oder AVIF und Größenänderung an der Kante routinemäßig mehr für die wahrgenommene Geschwindigkeit als jedes Backend-Tuning — und im Gegensatz zu regenerierenden Thumbnails in der Admin-Panel, es braucht keine Stunde Serverzeit und ein Gebet.
Häufig gestellte Fragen
Warum ist meine PrestaShop-Seite langsam?
Da jede Seite auf Abruf von PHP, Smarty-Vorlagen und Datenbank-Abfragen zusammengestellt wird, und dass die Arbeit für jeden Besucher wiederholt. Die Last wächst mit dem Katalog: Layered Navigation, Produktkombinationen, spezifische Preisregeln und Modul-Hooks alle add Abfragen pro Seite. Die für alle Käufer identischen Seiten zu cachen, entfernt die Wiederholung, anstatt sie zu optimieren.
Kann ich mit PrestaShop ganzseitiges Caching verwenden?
Ja, für den Katalog. Homepage, Kategorie, Produkt- und CMS-Seiten sind für anonyme Besucher identisch und können am Rand zwischengespeichert werden. Cart, Checkout, Customer Account Pages und der Admin-Bereich müssen immer den Cache umgehen, der durch das Erkennen des Session-Cookies von PrestaShop und das Servieren einer Live-Seite behandelt wird.
Welcher PrestaShop-Cookie sollte einen Cache-Bypass auslösen?
Das PrestaShop Session-Cookie namens PrestaShop- gefolgt von einem Hash, der für Ihre Installation einzigartig ist. Seine Anwesenheit zeigt an, dass der Besucher einen Warenkorb hat oder eingeloggt ist, und der Cache sollte für diese Anfragen umgangen werden. Überprüfen Sie zunächst, ob Ihre Installation Probleme, die Cookies für anonyme Besucher auf der ersten Seite laden, da, wenn es, Bypassing auf seiner Anwesenheit allein würde verhindern, dass jede Seite jemals zwischengespeichert.
Wie kann ich einen Multi-Currency-PrestaShop-Shop zwischenspeichern?
Fügen Sie Währung und Sprache in den Cache-Schlüssel ein, entweder indem Sie die entsprechenden Cookies zum Schlüssel hinzufügen, sodass jede Kombination separat zwischengespeichert wird, oder indem Sie verschiedene URLs pro Sprache und Währung verwenden, was für SEO vorzuziehen ist. Ohne dies füllt der erste Besucher, der eine Seite anfordert, den Cache mit seiner Währung aus und jeder spätere Besucher empfängt ihn. Auch Multi-Shop-Installationen müssen die Shop-Dimension umfassen.
Wie kann ich verhindern, dass Kunden veraltete Preise aus dem Cache sehen?
Spülen Sie das betroffene Produkt und Kategorie URLs, wenn ein Produkt gespeichert wird, reinigen Sie weitgehend nach Massenimporten, und halten Sie Produktseite TTLs zu etwa einer Stunde, so dass alles, was eine Spülung verpasst Selbstkorrekturen schnell. Wenn Sie Live Stock Levels anzeigen, schließen Sie entweder dieses Fragment von der zwischengespeicherten Seite aus oder akzeptieren Sie, dass es um die Länge des TTL nachlässt.
Die Zusammenfassung ist, dass PrestaShop aus guten Gründen schwer ist und für bessere zwischengespeichert werden kann. Cachen Sie den Katalog, umgehen Sie den Session-Cookie, holen Sie sich Währung und Sprache in den Cache-Schlüssel, bevor Sie live gehen, und optimieren Sie die Fotografie. Sie halten jedes Stück der Plattform Fähigkeit und verlieren den Teil, wo es die Menschen warten lässt.
Sehen Sie, wie NordicCDN dies für Ihre Website tut:
Mads hat seit seinem 16. Lebensjahr in der IT gearbeitet — hauptsächlich als Hosting. Er beteiligte sich früh an einer SaaS-Firma und half, sie bis zur Übernahme durch Visma weiterzuentwickeln, hat Data-Center-Netzwerke aufgebaut und betrieben und diente als CTO eines dänischen Rechenzentrums. Er hat NordicCDN gestartet, um eine schnelle, sichere Infrastruktur einfach zu bedienen.