Ich möchte, dass ein Geschäft eine Standardwährung basierend auf der IP des Kunden mithilfe von GeoIP beim ersten Besuch auf intelligente Weise auswählt (ohne vorausgewähltes Währungs-Cookie). Das Geschäft befindet sich hinter Varnish und verwendet die hervorragende Terpentine-Erweiterung von Nexcess.
Die Erweiterung behandelt Geldstrafen, solange das Standard-Magento-Währungscookie für eine bestimmte Anforderung festgelegt ist.
Meine Gedanken zu diesem Zeitpunkt sind:
- Fügen Sie VCL zur Varnish-Konfiguration hinzu, um die GeoIP-Suche (in C) durchzuführen, und setzen Sie das Cookie auf die eingehende Anforderung, sofern es nicht bereits festgelegt ist.
- Hinzufügen eines zwischengespeicherten Blocks pro Benutzer, der die Suche durchführt und das Cookie setzt (obwohl dies dann beim Laden der ersten Seite nicht zutreffen würde)
Fehlt mir eine offensichtliche Technik - vielleicht ein clientseitiger JS für einen nicht zwischengespeicherten URL-Pfad, der die Entscheidung trifft?
Kennt jemand den besten Weg, dies zu tun?
Ich habe das noch nie gemacht, aber was mir gerade einfällt:
Verwenden Sie libvmod-geoip, um den Ländercode zu bestimmen (haben diese Lackerweiterung nicht verwendet, seien Sie vorsichtig ;-)) https://github.com/lampeh/libvmod-geoip
Dann erweitern Sie die Hash-Funktion über
sub vcl_hash()
, um den Länderkürzel zu den Cache-Schlüsseln hinzuzufügen. So können Sie alles anhand der Landesvorwahl zwischenspeichern.Sie fügen auch den Ländercode als Header hinzu,
set req.http.X-GeoIP = geoip.client_country_code();
so dass der Magento-Server das richtige Land bestimmen und das richtige Material liefern kann.Dies ist nur eine Idee, die Sie möglicherweise verbessern müssen, aber sie hilft Ihnen hoffentlich dabei, eine gute Lösung zu finden :)
Sie können auch auf die Kundencookies zugreifen und nach einer Landesvorwahl / Währung suchen. Wenn diese eingestellt ist, können Sie einen anderen Weg gehen und die Geoip-Funktion nicht aufrufen.
quelle
Sie schlugen pro Benutzer das Zwischenspeichern vor, was Wahnsinn ist. Ihre Cachetrefferquote macht den Nutzen der Verwendung von Varnish nahezu zunichte. Ganz zu schweigen davon, dass Varnish durch seinen LRU-Mechanismus extrem hart daran arbeiten wird, alte Cache-Einträge pro Benutzer zu entfernen, um Platz für neue Cache-Einträge pro Benutzer zu schaffen.
Sie haben ein paar Möglichkeiten,
quelle