Jak działa wielojęzyczny sklep Magento z lakierem. Czy jest jakaś konfiguracja dostępna w lakierze, abyśmy mogli tworzyć bazę pamięci podręcznej na ciasteczkach?Magento Multi sklep z laguage z lakierem
Odpowiedz
Jeśli nie przeszkadza języków są na różnych adresach URL, terpentyny może obsłużyć to dla ciebie: https://github.com/nexcess/magento-turpentine/issues/36
Jeśli chcesz, żeby zachowywać się jak robią po wyjęciu z pudełka, kontynuujmy.
Trzeba zmodyfikować jak lakier generuje posiada w swojej Reference VCL : https://www.varnish-cache.org/trac/wiki/VCLExampleCachingLoggedInUsers
Chcielibyśmy zmodyfikować to również uwzględniać cookie sklepu, który ustawia Magento w oparciu o wybór języka. (Postępowanie tutaj: http://demo.magentocommerce.com) Niestety jest to trudne, ponieważ Varnish zwykle nie przekazuje plików cookie z powrotem do serwera lub nie zapisuje w pamięci podręcznej plików, gdy widzi ciasteczka latające wokół:
To by miało pamięć podręczną Varnish na podstawie wartości pliku cookie a także domyślny adres URL i gospodarz:
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);
}
ale z tej metody może trzeba dostosować resztę VCL buforować stronę prawidłowo i wysłać ciasteczka z powrotem do serwera
Inną opcją jest użycie pliku cookie, aby zmienić buforowanie na dowolnym nagłówku, nazwijmy go X-Mage-L 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=(.*?))(?:;|$)");
}
Wzór ten jest również stosowany do wykrywania urządzeń lakierem: https://github.com/varnish/varnish-devicedetect/blob/master/INSTALL.rst
Następnie trzeba by przedłużyć Mage_Core_Model_App używać tego nagłówka zamiast „Store” cookie. W Magento CE 1.7 jej _checkCookieStore:
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;
}
Można by ustawić aktualny sklep na $ _SERVER [ 'X-Mag-Lang'] zamiast cookie
Dodaj następujący wierszy Varnish Config
if(beresp.http.Set-Cookie) {
return (hit_for_pass);
}
jaki jest efekt tych linii? Czy to najlepsza lub najkrótsza odpowiedź? ;) – fbtb
- 1. Magento Multi Store Customer Combined Login Referencje
- 2. Sklep z danymi MixedCollection
- 3. Haproxy przed lakierem lub odwrotnie?
- 4. atrybut sklep z polem Lucene
- 5. Multi-tenancy z SQLAlchemy
- 6. Redis Multi-Set z TTL
- 7. Dapper Multi Mapping z QueryMultiple
- 8. Problem IoC z multi bindingiem
- 9. Sklep Firestore odczytuje reguły z samodoskonaleniem
- 10. Sklep Connect-redis nie działa z socket.io
- 11. Korzystanie z magento is_in_stock
- 12. Transakcja z bazą danych Magento
- 13. Magento - Znajdź produkty z zapasów
- 14. Magento baseURL z funkcji pomocnika
- 15. Pobierz subtotal magento z koszyka
- 16. pandy: jak uruchomić oś z multi-indeksem?
- 17. Pandy eval z dataframes multi-indeksowych
- 18. Pandy: Obrotowa z danymi multi-indeksowych
- 19. Sprawdzanie poprawności Laravel z Multi Wybierz
- 20. Jak skorzystać z multi-cpu w C++?
- 21. Sklep certyfikatów Windows
- 22. Sklep Android SQLite
- 23. SQL SELECT multi-multi-kolumny INTO zmiennej
- 24. Multi-field, multi-word, match bez query_string
- 25. Multi Threading
- 26. W jaki sposób dostosowuję sklep/produkt z kasetą Mezzanine?
- 27. Gdzie znajduje się Sklep z nazwami fsImage and edit Log?
- 28. Sklep z aplikacjami pobierz poprzednią wersję aplikacji zamiast najnowszej
- 29. Jak załadować sklep json z wieloma elementami root?
- 30. Sklep z aplikacjami Amazon i licencja na Androida LVL
Korzystanie z buforowania rozwiązań plików cookie dotyczyłoby tylko jednego użytkownika. –
To nie jest plik cookie sesji, to powoduje wyłączenie wartości cookie, która ma język w nim – timbroder
OK, mój błąd. Ładny przegląd anway. –