Warum ein Währungsumschalter und ein Page-Cache gegeneinander arbeiten
Fast jedes Support-Ticket, das mit „Preise werden in der falschen Währung angezeigt“ beginnt, endet an derselben Stelle: einem Seiten-Cache. Es lohnt sich zu verstehen, warum die beiden sich gegenseitig bekämpfen, denn die Lösung hängt davon ab, wer gewinnt.
Was ein Seiten-Cache eigentlich tut
Ein Seiten-Cache speichert das fertige HTML einer Seite und liefert jedem Besucher dasselbe HTML aus. Das ist der ganze Zweck – der Server hört auf zu rendern und gibt stattdessen eine Datei aus. Genau das ist das Problem. Der Preis auf einer Produktseite ist kein fester Text: Er hängt davon ab, welche Währung der jeweilige Besucher gewählt hat. Wird die Seite zwischengespeichert, während ein Besucher in USD stöbert, erhält der nächste Besucher ebenfalls USD, egal was er gewählt hat.
Die beiden Auswege
Es gibt nur zwei ehrliche Ansätze, und FOX unterstützt beide.
Seiten vom Cache ausschließen. Preise sind immer korrekt, aber Sie verlieren die Geschwindigkeit, für die der Cache angeschafft wurde. Das ist die richtige Wahl für Warenkorb, Checkout und Kontoseiten, die ohnehin nie gecacht werden sollten.
Die Seite cachen und die Preise im Browser korrigieren. FOX liefert die gecachte Seite aus, wie sie ist, und zeichnet dann beim Laden die Preis-Knoten in der vom Besucher gewählten Währung neu. Das ist es, was die Option Cache in den Plugin-Einstellungen aktiviert. Die Seite bleibt schnell, und es gibt einen kurzen Moment vor dem Neuzeichnen – dafür ist der Preloader über dem Preis da.
Wo es schiefgeht
Der zweite Ansatz setzt voraus, dass das Plugin die Währung des Besuchers kennt, und genau hier stören Caching-Plugins und CDNs.
Wenn das Plugin die Währung in einem Cookie speichert, setzt die allererste Anfrage eines neuen Besuchers dieses Cookie. Aggressive Caches – Cloudflare APO ist das strenge Beispiel – behandeln jede Antwort mit einem Set-Cookie-Header als personalisiert und weigern sich, sie zu cachen. Das Ergebnis ist eine Website, bei der der Cache scheinbar aktiviert ist und niemals tatsächlich etwas zwischenspeichert.
Seit Version 2.5.0 vermeidet FOX dies. Wenn Storage auf Transient gesetzt und die Cache-Option aktiviert ist, speichert das Plugin einen zufälligen Schlüssel im localStorage des Browsers, anstatt ein Cookie zu setzen. Dadurch ist das HTML, das den Server verlässt, für alle gleich, und der Cache kann seine Arbeit tun. Jede andere Speicherkombination verhält sich wie zuvor.
Die Checkliste
- Warenkorb-, Checkout- und Kontoseiten immer vom Cache ausschließen.
- Die Cache-Option des Plugins aktivieren, wenn die Shop-Seiten gecacht werden.
- Storage auf Transient setzen, wenn ein CDN vor der Website sitzt.
- Das JavaScript des Plugins nicht durch einen Optimierer verzögern oder bündeln – das Neuzeichnen erfolgt beim Laden, und ein Optimierer, der es verzögert, verwandelt den Preloader in einen permanenten Spinner.
Wenn die Preise nach allen vier Punkten immer noch falsch sind, liegt es nicht am Cache. Eröffnen Sie ein Support-Thema mit der Seiten-URL und der Caching-Konfiguration, und wir werden uns das ansehen.