Por que o cache de página inteira está desativando o cache de bloco?

13

Eu tenho uma parte estática que está incluída em todas as páginas (navegação), mas leva muito tempo para gerar. É por isso que defini uma vida útil do cache e uma chave de cache estática.

Funciona bem, até que o FPC esteja ativado. Em seguida, o bloco ainda é gerado novamente para uma página chamada recentemente e não é exibido no cache do bloco.

Existe esta linha em Enterprise_PageCache_Model_Observer:

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

Qual é a razão para isto? Faz sentido para mim ainda armazenar em cache certos blocos, mesmo se o FPC estiver ativado - porque, caso contrário, a geração de páginas que não são totalmente veiculadas no cache fica mais lenta.

  1. Qual é a decisão do projeto por trás disso?
  2. Qual é uma boa solução para isso?
  3. Seria prejudicial se eu apenas removesse esta proibição de cache de bloco?
Alex
fonte
sabe que esta é uma pergunta antiga, mas você encontrou algo sobre isso?
xelber

Respostas:

1

Este bug foi corrigido no Magento 1.14.2.0. (ref http://merch.docs.magento.com/ee/user_guide/magento/release-notes-ee-1.14.2.html em Problemas conhecidos)

user487772
fonte
2
Acabei de me debruçar sobre isso em 1.14.2.4. Eu posso ver que a lógica mudou ao longo do tempo. O código é cercado pelo if: if ($this->_processor->canProcessRequest($request) && ($request->isStraight() || $this->_processor->getRequestProcessor($request)) ) { Mage::app()->getCacheInstance()->banUse(Mage_Core_Block_Abstract::CACHE_GROUP); } mas não consigo encontrar nada sobre o motivo por que você baniria o cache do bloco. Você pode esclarecer mais?
PanPipes
2

Ser capaz de desativar o FPC para blocos dinâmicos, por exemplo, na página de checkout ou carrinho. Sobre a terceira pergunta, na minha opinião, você não deve fazer o que pode ser um processo quebrado do FPC (para ser franco, para dar a resposta certa, devemos verificar o código-fonte também).

Oğuz Çelikdemir
fonte
A sua primeira parte está relacionada à minha primeira pergunta? Se sim, por que o cache do bloco precisa ser desativado para desativar o FPC na página de checkout ou carrinho? De fato, o cache do bloco será desativado apenas se a página inteira estiver em cache.
Alex
Apenas verifiquei o código fonte que está controlando os cookies do usuário. Se o usuário tiver bloqueado o cookie, o FPC bloqueará os caches. A função _getCookie retorna a instância Enterprise_PageCache_Model_Cookie que está controlando o cookie do usuário.
Oğuz Çelikdemir
O que isso tem a ver com o cookie? E de qual linha de código você está falando? confuso
Alex
Alex, hoje à noite vou verificar novamente e enviar os blocos de código necessários.
Oğuz Çelikdemir