Dlaczego pamięć podręczna pełnej strony blokuje pamięć podręczną bloków?


13

Mam część statyczną, która znajduje się na każdej stronie (nawigacja), ale jej wygenerowanie zajmuje dużo czasu. Dlatego ustawiłem czas życia bufora i statyczny klucz pamięci podręcznej.

Działa dobrze, dopóki FPC nie zostanie włączone. Następnie blok jest generowany ponownie dla nowo wywoływanej strony i nie jest obsługiwany z pamięci podręcznej bloku.

Ta linia znajduje się w Enterprise_PageCache_Model_Observer:

Mage::app()
    ->getCacheInstance()
    ->banUse(Mage_Core_Block_Abstract::CACHE_GROUP); // disable blocks cache

Jaki jest tego powód? Dla mnie sensowne jest nadal buforowanie niektórych bloków, nawet jeśli FPC jest włączony - ponieważ w przeciwnym razie generowanie stron, które nie są w pełni obsługiwane z pamięci podręcznej, zostanie spowolnione.

  1. Co kryje się za tym projektem?
  2. Jakie jest wokół tego dobre rozwiązanie?
  3. Czy byłoby to szkodliwe, jeśli po prostu usunę blokadę pamięci podręcznej bloków?

wiesz, że to stare pytanie, ale czy znalazłeś coś na ten temat?
xelber,

Odpowiedzi:


1

Ten błąd został naprawiony w Magento 1.14.2.0. (patrz http://merch.docs.magento.com/ee/user_guide/magento/release-notes-ee-1.14.2.html w części Znane problemy)


2
Właśnie wpadłem na to w 1.14.2.4. Widzę, że logika zmieniła się z czasem. Kod jest otoczony przez if: if ($this->_processor->canProcessRequest($request) && ($request->isStraight() || $this->_processor->getRequestProcessor($request)) ) { Mage::app()->getCacheInstance()->banUse(Mage_Core_Block_Abstract::CACHE_GROUP); } ale nie mogę znaleźć niczego, co uzasadniałoby zablokowanie pamięci podręcznej bloków. Czy możesz oświecić więcej?
PanPipes 19.04.2016

2

Aby móc wyłączyć FPC dla bloków dynamicznych, na przykład w kasie lub na stronie koszyka. Jeśli chodzi o trzecie pytanie, moim zdaniem nie powinieneś tego robić, co może zepsuć proces FPC (szczerze mówiąc, aby udzielić właściwej odpowiedzi, powinniśmy również sprawdzić kod źródłowy).


Czy twoja pierwsza część dotyczy mojego pierwszego pytania? Jeśli tak, dlaczego pamięć podręczna bloków musi być wyłączona, aby wyłączyć FPC w kasie lub na stronie koszyka? W rzeczywistości blokowanie pamięci podręcznej jest wyłączone tylko wtedy, gdy cała strona jest buforowana.
Alex

Właśnie sprawdziłem kod źródłowy kontrolujący pliki cookie użytkownika. Jeśli użytkownik zablokował plik cookie, FPC blokuje pamięci podręczne. Funkcja _getCookie zwraca instancję Enterprise_PageCache_Model_Cookie, która kontroluje cookie użytkownika.
Oğuz Çelikdemir

Co to ma wspólnego z plikiem cookie? A o której linii kodu mówisz? zdezorientowany
Alex

Alex, dziś wieczorem sprawdzę ponownie i wyślę ci niezbędne bloki kodu.
Oğuz Çelikdemir
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.