Magento + Nginx缓存+货币选择器

时间:2013-10-04 02:41:05

标签: magento caching cookies nginx

我正在处理一个Magento网站http://www.burdastyle.co.uk/,并且在更改货币时存在问题。货币选择器应该添加一个带有“货币”键和所选货币价值的cookie,例如“USD”,“AUD”等。

该网站由nginx运行,它也使用nginx缓存。我知道这是缓存导致这不能作为缓存块的nginx conf的一部分工作:

fastcgi_hide_header "Set-Cookie";

如果我删除该行,货币选择器按预期工作,但是如果我在购物车中添加商品,而其他人查看他们的购物车,则会显示我刚添加的项目,因为它显示没有该行,所有cookie值被缓存并提供给所有最终用户。

完整的nginx缓存块是:

location @fcgi_cache {
   fastcgi_pass phpfpm;
   #fastcgi_cache mage;
   fastcgi_cache mage_bs;
   fastcgi_cache_key "$mobile_request|$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri|$cookie_currency";

   fastcgi_hide_header "Set-Cookie";

   if ($http_cookie !~ "X-Store=1" ) {
     add_header Set-Cookie "X-Store=1; path=/";
   }

   fastcgi_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
   fastcgi_cache_min_uses 1;
   fastcgi_cache_valid 200 202 8h;
   fastcgi_cache_use_stale updating error timeout invalid_header http_500;
   fastcgi_cache_bypass $cookie_EXTERNAL_NO_CACHE $cookie_CUSTOMER_AUTH;
   fastcgi_no_cache $cookie_EXTERNAL_NO_CACHE $cookie_CUSTOMER_AUTH;
}

我尝试添加“add_header Set-Cookie”currency = $ {cookie_currency}; path = /“;但似乎在fastcgi_hide_header行之后,$ cookie_currency变量被清除,所以这也不起作用。

任何帮助将不胜感激。先谢谢你。

1 个答案:

答案 0 :(得分:0)

我建议您使用LiveHTTPHeaders来测试应用并解决问题。

另一方面,在设置cookie时重新添加域名。否则浏览器不会发送cookie。以下是一个示例语法:

# I set the expiricy for 24 hours
add_header Set-Cookie "currency=${cookie_currency};Domain=www.burdastyle.co.uk;Path=/;Max-Age=86400";

问候,