Saya ingin toko secara cerdas memilih mata uang default berdasarkan IP pelanggan menggunakan GeoIP ketika mereka pertama kali mengunjungi (tanpa cookie mata uang yang dipilih sebelumnya). Toko ini berada di belakang Varnish menggunakan ekstensi Turpentine Nexcess yang sangat baik.
Perpanjangan menangani mata uang dengan baik selama cookie mata uang Magento standar ditetapkan pada permintaan yang diberikan.
Pikiran saya pada tahap ini adalah:
- Tambahkan VCL ke dalam konfigurasi Varnish untuk melakukan pencarian GeoIP (dalam C) dan mengatur cookie pada permintaan masuk, jika belum diatur, tentu saja.
- Tambahkan blok cache per-pengguna yang melakukan pencarian dan mengatur cookie (meskipun ini kemudian tidak berlaku pada pemuatan halaman pertama)
Apakah saya kehilangan teknik yang jelas - mungkin beberapa JS sisi klien ke jalur URL yang tidak di-cache yang membuat penentuan?
Adakah yang tahu cara terbaik untuk melakukan ini?
Saya belum pernah melakukan ini sebelumnya, tetapi apa yang terlintas di benak saya:
Gunakan libvmod-geoip untuk menentukan kode negara (belum menggunakan ekstensi pernis ini, berhati-hatilah ;-)) https://github.com/lampeh/libvmod-geoip
Kemudian Anda memperluas fungsi hash via
sub vcl_hash()
untuk menambahkan kode negara ke kunci cache. Itu memungkinkan Anda untuk men-cache semuanya berdasarkan kode negara.Anda juga menambahkan kode negara sebagai tajuk, seperti
set req.http.X-GeoIP = geoip.client_country_code();
agar server magento dapat menentukan negara yang benar dan mengirimkan barang yang benar.Ini hanya sebuah ide, Anda mungkin perlu memperbaikinya, tetapi semoga membantu Anda menemukan solusi yang baik :)
Anda juga dapat mengakses cookie pelanggan dan memeriksa kode negara / mata uang dan, jika diatur, gunakan cara yang berbeda dan jangan panggil fungsi geoip ...
sumber
Anda menyarankan per caching pengguna, yang gila. Cache hit rate Anda akan hampir nol membatalkan manfaat menggunakan Varnish. Belum lagi Varnish akan bekerja sangat keras melalui mekanisme LRU untuk membuang entri cache per pengguna yang lama untuk memberi ruang bagi entri cache pengguna yang baru.
Anda punya beberapa pilihan,
sumber