Desejo que uma loja escolha inteligentemente uma moeda padrão com base no IP do cliente usando o GeoIP na primeira visita (sem cookie de moeda pré-selecionado). A loja fica atrás da Varnish usando a excelente extensão Turpentine da Nexcess.
A extensão manipula bem a moeda, desde que o cookie de moeda Magento padrão seja definido em uma determinada solicitação.
Meus pensamentos nesta fase são:
- Adicione VCL na configuração do Varnish para fazer a pesquisa GeoIP (em C) e defina o cookie na solicitação de entrada, se ainda não estiver definida, é claro.
- Adicione um bloco em cache por usuário que faça a pesquisa e defina o cookie (embora isso não se aplique no carregamento da primeira página)
Estou perdendo uma técnica óbvia - talvez algum JS do lado do cliente para um caminho de URL em cache não-verniz que faça a determinação?
Alguém sabe a melhor maneira de fazer isso?
Eu não fiz isso antes, mas o que é isso que me passa pela cabeça:
Use libvmod-geoip para determinar o código do país (não use esta extensão de verniz, tenha cuidado ;-)) https://github.com/lampeh/libvmod-geoip
Em seguida, você estende a função hash via
sub vcl_hash()
para adicionar o código do país às chaves de cache. Isso permite que você armazene em cache tudo com base no código do país.Você também adiciona o código do país como um cabeçalho,
set req.http.X-GeoIP = geoip.client_country_code();
assim o servidor magento é capaz de determinar o país correto e entregar o material correto.Esta é apenas uma ideia, pode ser necessário melhorá-la, mas espero que ajude você a encontrar uma boa solução :)
Você também pode acessar os cookies dos clientes e verificar o código do país / moeda e, se definido, seguir um caminho diferente e não chamar a função geoip ...
fonte
Você sugeriu o cache por usuário, o que é loucura. Suas taxas de acerto no cache quase não anularão nenhum benefício do uso do Varnish. Sem mencionar que o Varnish trabalhará muito duro por meio de seu mecanismo LRU para descartar entradas antigas de cache por usuário para criar espaço para novas entradas de cache por usuário.
Você tem poucas opções,
fonte