Çoklu Dil Magento deposu Vernik ile çalışır. Vernikte herhangi bir konfigürasyon var mı? Bu yüzden çerezlerde önbellek tabanı oluşturabiliriz? Vernik Config'de hatları ardındanMagento Vernikli çok labirent deposu
cevap
farklı URL'ler olmak dilleri sakıncası yoksa, Terebentin sizin için bu işleyebilir: https://github.com/nexcess/magento-turpentine/issues/36
bunları olarak davranmak istiyorsanız Kutudan çıkarlar, devam edelim. Biz de hesaba Magento setleri dil seçiciden dayalı mağaza çerez almak için bu değişiklik yapacağı https://www.varnish-cache.org/trac/wiki/VCLExampleCachingLoggedInUsers
:
Sen vernik senin VCL Başvurusu vardır üretir nasıl değiştirmek gerekir. (Buradaki davranışları izleyerek: http://demo.magentocommerce.com) Maalesef bu, verniklerin çerezleri sunucuya aktarma eğilimi göstermediği veya çerezleri
arasında uçtuğuna bakmazsa bu durumun zor olması maalesef bu durum, Çerezin değerine göre Varnish önbelleğine sahip olacaktır. yanı varsayılan url ve ev sahibi olarak: Bu yöntemle
sub vcl_hash {
hash_data(req.url);
hash_data(req.http.host);
if (req.http.Cookie ~ "(?:^|;\s*)(?:store=(.*?))(?:;|$)"){
hash_data(regsub(req.http.Cookie, "(?:^|;\s*)(?:store=(.*?))(?:;|$)"));
}
return (hash);
}
Ama, sayfayı düzgün önbelleğe vE sunucuya
Diğer bir seçenek geri çerezleri göndermek için VCL kalanını ince ayar gerekebilir çerezi rasgele bir üstbilgiye göre değiştirmek için kullanmaktır, X-Mage-L olarak adlandırın Ang:
sub vcl_fetch {
#can do this better with regex
if (req.http.Cookie ~ "(?:^|;\s*)(?:store=(.*?))(?:;|$)"){
if (!beresp.http.Vary) { # no Vary at all
set beresp.http.Vary = "X-Mage-Lang";
} elseif (beresp.http.Vary !~ "X-Mage-Lang") { # add to existing Vary
set beresp.http.Vary = beresp.http.Vary + ", X-Mage-Lang";
}
}
# comment this out if you don't want the client to know your classification
set beresp.http.X-Mage-Lang = regsub(req.http.Cookie, "(?:^|;\s*)(?:store=(.*?))(?:;|$)");
}
Bu model, aynı zamanda boya cihaz tespiti için kullanılır: https://github.com/varnish/varnish-devicedetect/blob/master/INSTALL.rst
Daha sonra, bunun yerine 'mağaza' çerez bu başlığı kullanma Mage_Core_Model_App uzanan gerekir. Magento CE 1.7 onun _checkCookieStore olarak:
protected function _checkCookieStore($type)
{
if (!$this->getCookie()->get()) {
return $this;
}
$store = $this->getCookie()->get(Mage_Core_Model_Store::COOKIE_NAME);
if ($store && isset($this->_stores[$store])
&& $this->_stores[$store]->getId()
&& $this->_stores[$store]->getIsActive()) {
if ($type == 'website'
&& $this->_stores[$store]->getWebsiteId() == $this->_stores[$this->_currentStore]->getWebsiteId()) {
$this->_currentStore = $store;
}
if ($type == 'group'
&& $this->_stores[$store]->getGroupId() == $this->_stores[$this->_currentStore]->getGroupId()) {
$this->_currentStore = $store;
}
if ($type == 'store') {
$this->_currentStore = $store;
}
}
return $this;
}
yerine çerezi
Ekleme,
if(beresp.http.Set-Cookie) {
return (hit_for_pass);
}
bu satırların etkisi ne ait $ _SERVER [ 'X-Mage-Lang'] üzerinde mevcut mağazaya kuracak? En iyi ya da en kısa cevap bu mu? ;) – fbtb
Çerez çözümü önbelleğini kullanmak, yalnızca bir kullanıcı için geçerli olacaktır. –
Bu bir oturum çerezi değil, içindeki dilin olduğu cookie'nin değerini tetikliyor – timbroder
Tamam, benim hatam. Güzel bir bakış anway. –