Direkt zum Inhalt

Cookie-Einstellungen

Wählen Sie, welche Arten von Cookies Sie erlauben. Sie können Ihre Auswahl jederzeit über Cookie-Einstellungen unten auf jeder Seite ändern. Datenschutzerklärung

Notwendig

Immer aktiv

Nötig zum Einloggen, für Ihren Warenkorb und um Ihre Auswahl zu speichern. Diese sind immer aktiv.

Welche Cookies?
  • weboke_sessie, weboke_klant, weboke_remember: Ihre Sitzung und eingeloggt bleiben
  • weboke_basket: Ihr Warenkorb
  • wkBtwIncl: Preise mit oder ohne MwSt. anzeigen
  • wok_cookies: Ihre Cookie-Auswahl, 12 Monate

Misst, welche Anzeige zu einem Besuch oder einer Bestellung führt, damit wir nicht für Anzeigen zahlen, die nichts bringen.

Welche Cookies?
  • Google Ads über Google Tag Manager (_gcl_au, _gcl_aw), bis zu 90 Tage
  • OpenAI Ads, Anzeigen in ChatGPT
  • wok_aff: über welchen Partner Sie zu uns kamen (Partnerprogramm), 60 Tage

4,6

Land und Sprache

Jedes Land hat seine eigene Website, mit Preisen und MwSt. dieses Landes.

Anzeigen

Modul 6 · 6.4

Deutsch

Geschwindigkeit und Caching bei einem Shop

Modul 6: Verwaltung und Sicherheit · Lesezeit: 10 Minuten

Lernziel: Nach dieser Lektion können Sie das Caching für einen WooCommerce-Shop so einrichten, dass der Shop schnell ist und persönliche Seiten nie in den Cache gelangen, und Sie können das anhand der Header prüfen.

Kernbegriffe: Seiten-Cache, Ausschlüsse (Warenkorb, Kasse, Ihr Konto), Cookies, die den Cache umgehen, No-Cache-Header, DONOTCACHEPAGE, Objekt-Cache, Redis, Warenkorb-Fragmente, Geolokalisierung mit Seiten-Cache, geplante Aktionen aufräumen

Zwei Arten von Seiten

Die Grundlagen des Cachings (Seiten-Cache, Browser-Cache, Objekt-Cache, OPcache, ein CDN) finden Sie im WordPress-Kurs, Lektion 6.2. Dort steht auch schon die wichtigste Regel für Shops: Persönliche Seiten dürfen nicht in den Seiten-Cache. Diese Lektion vertieft das.

Ein Shop hat zwei Arten von Seiten:

ArtBeispieleCache
Für alle gleichStartseite, Shopseite, Kategorien, Produktseiten, InformationsseitenSeiten-Cache: ja, hier liegt der größte Gewinn
Für jeden Besucher andersWarenkorb, Kasse, Ihr Konto, die Widerrufsseite mit einem angemeldeten KundenSeiten-Cache: nie

Geht etwas schief, sehen Sie es sofort: Ein Kunde sieht den Warenkorb eines anderen oder, schlimmer noch, die Adresse einer anderen Person auf der Kassenseite. Das ist auch eine Datenpanne im Sinne der DSGVO (KB 6749).

Was WooCommerce selbst schon tut

WooCommerce unterstützt einen Cache auf drei Arten. Es ist gut, sie zu kennen, damit Sie bemerken, wenn etwas sie aushebelt:

  1. Konstanten. Auf Warenkorb, Kasse und Ihr Konto setzt WooCommerce DONOTCACHEPAGE (und ebenso Konstanten für Objekt- und Datenbank-Cache). Viele Cache-Plugins lesen diese Konstante und überspringen die Seite dann.
  2. Header. Auf denselben Seiten sendet WooCommerce die No-Cache-Header von WordPress mit: Cache-Control: no-cache, must-revalidate, max-age=0, private und ein Expires in der Vergangenheit. Ein Proxy oder CDN, das sich an die Regeln hält, speichert die Seite dann nicht. Für angemeldete Benutzer kommt no-store hinzu.
  3. Cookies. Sobald jemand etwas in den Warenkorb legt, setzt WooCommerce Cookies wie woocommerce_items_in_cart, woocommerce_cart_hash und wp_woocommerce_session_.... Gute Caches liefern Besuchern mit einem solchen Cookie keine gespeicherte Seite mehr aus, auch nicht bei Produktseiten, weil zum Beispiel der Warenkorb im Kopfbereich dann für jeden Besucher anders ist.

Die Dokumentation von WooCommerce nennt für Cache-Plugins: Schließen Sie Warenkorb, Ihr Konto und Kasse aus, außerdem die Cookies woocommerce_cart_hash, woocommerce_items_in_cart, wp_woocommerce_session_, woocommerce_recently_viewed und store_notice[...]. Für Varnish nennt sie zusätzlich Regeln für Adressen mit ?add-to-cart=.

Wo es in der Praxis schiefgeht

  • Andere Adressen für die Shopseiten. Sie haben den Warenkorb in /einkaufskorb/ umbenannt oder ein Übersetzungs-Plugin erzeugt /de/warenkorb/. Ein Cache, der feste Adressen wie /cart ausschließt, erfasst diese nicht. Cache-Plugins, die WooCommerce kennen, lesen die Seiten aus den Einstellungen; ein Cache auf dem Server oder bei einem CDN tut das nicht.
  • Ein CDN, das alles cacht. Manche CDN-Regeln („cache everything“) ignorieren die Header. Schließen Sie dann die Shopseiten und die genannten Cookies ausdrücklich aus.
  • Ein Plugin, das die Header überschreibt. Ein Sicherheits- oder Performance-Plugin setzt manchmal auf jeder Seite Cache-Control: public, max-age=.... Dann sind die No-Cache-Header verschwunden.
  • Eine Sitzung für jeden Besucher. Normalerweise setzt WooCommerce erst dann ein Sitzungscookie, wenn etwas im Warenkorb liegt. Startet ein Plugin oder Theme schon für jeden Besucher eine Sitzung (ein Cookie wp_woocommerce_session_ oder PHPSESSID beim ersten Besuch), entfällt der Seiten-Cache für alle, und Ihr Shop wird bei hohem Andrang langsam.
  • Geolokalisierung. Unter WooCommerce > Einstellungen > Allgemein wählen Sie den Standard-Standort eines Kunden. Mit der einfachen „Geolokalisierung“ ermittelt der Server für jeden Besucher das Land, und bei Preisen pro Land passt das nicht zu einem Seiten-Cache. WooCommerce bietet deshalb die Option „Geolokalisierung (mit Unterstützung für Seiten-Caching)“, die das Land über eine zusätzliche Abfrage im Browser bestimmt. Brauchen Sie vor der Kasse keine Preise oder Umsatzsteuer pro Land, wählen Sie das Land des Shops: Das ist am einfachsten. Für die Geolokalisierung lädt WooCommerce regelmäßig eine Datenbank von MaxMind herunter.

Auf einem LiteSpeed-Server (wie bei WebOké) regelt das Plugin LiteSpeed Cache die Ausschlüsse für WooCommerce selbst; prüfen Sie sie in den Einstellungen für Ausschlüsse. Bei anderen Webservern und Hostern funktioniert es mit einem anderen Cache-Plugin ähnlich.

Was der Seiten-Cache nicht löst

Warenkorb und Kasse werden immer von PHP und der Datenbank aufgebaut. Bei hohem Andrang (eine Aktion, ein Newsletter) sind das genau die Seiten, auf denen Ihre Kunden Geld ausgeben. Dort helfen andere Dinge:

  • Ein Objekt-Cache wie Redis speichert die Ergebnisse von Datenbankabfragen im Arbeitsspeicher. Bei einem Shop mit vielen Seiten, die nicht in den Seiten-Cache dürfen, bringt das spürbar mehr als bei einer gewöhnlichen Website. Ihr Hosting muss Redis anbieten (bei WebOké ist das möglich, DA 15.7); danach aktivieren Sie es mit einem Plugin.
  • Warenkorb-Fragmente. Klassische Themes aktualisieren den Warenkorb im Kopfbereich mit einem Skript (wc-cart-fragments), das bei einem gefüllten Warenkorb eine zusätzliche Abfrage auslöst. Moderne Block-Themes mit dem Mini-Warenkorb-Block brauchen das weniger. Laden Sie solche Skripte nicht auf Seiten, auf denen sie nichts tun.
  • Aufgeräumte geplante Aktionen. WooCommerce nutzt den Action Scheduler für Hintergrundaufgaben (Lektion 7.3). Abgeschlossene Aktionen werden standardmäßig nach einem Monat aufgeräumt. Wächst die Liste trotzdem auf Hunderttausende an, oft durch eine Erweiterung, die immer weiter etwas plant, oder durch fehlgeschlagene Aktionen, werden Datenbankabfragen langsamer. Prüfen Sie unter WooCommerce > Status > Geplante Aktionen die Anzahl der fehlgeschlagenen und ausstehenden Aktionen.
  • HPOS. Bestellungen in eigenen Tabellen (Lektion 1.2) machen die Suche in Bestellungen schneller als in der alten Beitragstabelle. Bestehende Shops müssen selbst umstellen (Lektion 6.2 zu Backups vorab).
  • Eine aktuelle PHP-Version und genügend Arbeitsspeicher (Lektion 7.2).

In der Praxis: So sieht es in WooCommerce aus

Prüfen Sie es bei Theehuis Example in einem privaten Fenster mit den Entwicklerwerkzeugen Ihres Browsers (F12, Registerkarte Netzwerk, erste Anfrage):

  1. Startseite zweimal laden: Beim zweiten Mal erscheint ein Header wie x-litespeed-cache: hit oder cf-cache-status: HIT. Kein Cookie wp_woocommerce_session_ beim ersten Besuch.
  2. shop.example.com/winkelwagen/ zweimal laden: kein Hit, und cache-control mit no-cache oder private.
  3. Dasselbe für die Kasse und Ihr Konto.
  4. Legen Sie ein Produkt in den Warenkorb und laden Sie eine Produktseite: Sie sehen Ihren eigenen Warenkorb, keine gespeicherte Version.

Zusammenfassung

  • Seiten, die für alle gleich sind, in den Cache; Warenkorb, Kasse und Ihr Konto nie.
  • WooCommerce setzt selbst DONOTCACHEPAGE, No-Cache-Header und Cookies; prüfen Sie, dass nichts diese entfernt oder ignoriert.
  • Achten Sie auf umbenannte Adressen, CDN-Regeln, Plugins, die Header überschreiben, Sitzungen für jeden Besucher und Geolokalisierung.
  • Redis, aufgeräumte geplante Aktionen, HPOS und eine gute PHP-Version helfen dort, wo der Seiten-Cache nicht greifen darf.
  • Testen Sie durch zweimaliges Laden in einem privaten Fenster und lesen Sie die Header.

Quiz

1. Ein Kunde sieht in seinem Warenkorb Produkte, die er nicht ausgewählt hat. Was ist die wahrscheinlichste Ursache?



2. Welchen Header erwarten Sie auf der Kassenseite eines WooCommerce-Shops?



3. Ihr Shop zeigt keine Preise pro Land, aber der Standard-Standort steht auf „Geolokalisierung“. Was ist eine einfache Verbesserung für den Cache?



4. Warum hilft Redis bei einem Shop mehr als bei einer gewöhnlichen Informationswebsite?



Aufgabe

Aufgabe A6.4: Bleiben Warenkorb und Kasse aus dem Cache? Geben Sie die Adresse Ihres Shops ein sowie die Adressen Ihrer Warenkorb- und Kassenseite (und gegebenenfalls von Ihr Konto). Das Programm ruft die Startseite zweimal im Abstand von 2 Sekunden ohne Cookies ab und danach jede Shopseite ebenfalls zweimal. Es wird nichts in den Warenkorb gelegt und nichts bestellt. Grün, wenn die Startseite beim zweiten Mal aus dem Cache kommt (oder deutlich schneller ist), ohne ein Sitzungscookie zu setzen, und wenn jede Shopseite beim zweiten Mal keinen Cache-Treffer hat und einen Cache-Control mit no-cache, no-store, private oder max-age=0 sendet. Orange, wenn die Startseite keinen Cache nutzt oder eine Shopseite zwar keinen Treffer, aber auch keinen No-Cache-Header hat. Rot bei einem Cache-Treffer auf Warenkorb, Kasse oder Ihr Konto oder wenn die Startseite für jeden Besucher eine WooCommerce-Sitzung startet.

Ein grünes Häkchen bedeutet, dass diese Prüfung jetzt stimmt, nicht, dass Ihr Shop sicher ist.

Aufgabe A6.4: Bleiben Warenkorb und Kasse aus dem Cache?





Was Sie eingeben und was wir finden, speichern wir nicht. Ihr Browser merkt sich Ihre Antworten und ob Sie die Aufgabe bestanden haben. Sind Sie angemeldet, speichern wir in Meine Kurse nur, dass Sie die Aufgabe (fast) richtig hatten; auch das können Sie dort löschen.

Weiterführende Informationen

Schritte in einem Panel gelten für WebOké; bei anderen Anbietern funktioniert es ähnlich.

Einen Moment bitte…

Richten Sie Ihre Domains ein

Legen Sie für jede Domain die Nameserver, die Verknüpfung mit Ihrem Hosting und den künftigen Inhaber fest.

Ihre Domains werden geladen…