2013-10-04 42 views
4

我有一個Magento網站http://www.burdastyle.co.uk/,我正在努力,並且在更改貨幣時出現問題。貨幣選擇器應該添加一個cookie,其中包含「貨幣」鍵和所選幣種的值,例如「USD」,「AUD」等。Magento + Nginx緩存+貨幣選擇器

該網站由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設置Cookie」 貨幣= $ {cookie_currency};路徑= /「,但它似乎fastcgi_hide_header線之後,$ cookie_currency變量被消滅了,所以這並不能工作

任何幫助,將不勝感激謝謝你在先進

+1

我建議您使用Varnish + Turpentine作爲替代緩存,然後再打孔,這樣可以幫助您在這裏 – edmondscommerce

+0

如果沒有正確配置Magento,Varnish將會增加更多會話粘度問題。 – Rabea

+0

請記住,Cookie必須包含域名。嘗試包括所有信息: – alfredocambera

回答

0

我。建議您使用LiveHTTPHeaders測試應用程序並使用LiveHTTPHeaders來解決問題

另一方面,remenber在設置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"; 

Greetings,