Pourquoi le cache pleine page désactive-t-il le cache de blocs?

13

J'ai une partie statique qui est incluse sur chaque page (navigation), mais prend beaucoup de temps à générer. C'est pourquoi j'ai défini une durée de vie du cache et une clé de cache statique.

Fonctionne bien, jusqu'à ce que FPC soit activé. Ensuite, le bloc est toujours généré à nouveau pour une page nouvellement appelée et non servi à partir du cache de bloc.

Il y a cette ligne dans Enterprise_PageCache_Model_Observer:

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

Quelle est la raison pour ça? Il est logique pour moi de toujours mettre en cache certains blocs, même si FPC est activé - car sinon la génération de pages qui ne sont pas entièrement servies à partir du cache est ralentie.

  1. Quelle est la décision de conception derrière cela?
  2. Quelle est la bonne solution à ce sujet?
  3. Serait-il dangereux de supprimer cette interdiction de cache de bloc?
Alex
la source
sais que c'est une vieille question, mais avez-vous trouvé quelque chose là-dessus?
xelber

Réponses:

1

Ce bogue a été corrigé dans Magento 1.14.2.0. (réf http://merch.docs.magento.com/ee/user_guide/magento/release-notes-ee-1.14.2.html sous Problèmes connus)

user487772
la source
2
Je viens de tomber sur ce point sur 1.14.2.4. Je peux voir que la logique a changé avec le temps. Le code est entouré par le if: if ($this->_processor->canProcessRequest($request) && ($request->isStraight() || $this->_processor->getRequestProcessor($request)) ) { Mage::app()->getCacheInstance()->banUse(Mage_Core_Block_Abstract::CACHE_GROUP); } mais je ne trouve rien sur le raisonnement derrière la raison pour laquelle vous interdiriez le cache de bloc. Pouvez-vous éclairer davantage?
PanPipes
2

Pour pouvoir désactiver FPC pour les blocs dynamiques, par exemple, dans la page de paiement ou de panier. À propos de la 3ème question, à mon avis, vous ne devriez pas faire cela, ce qui pourrait interrompre le processus FPC (pour être franc, pour donner la bonne réponse, nous devons également vérifier le code source).

Oğuz Çelikdemir
la source
Votre première partie concerne-t-elle ma première question? Si oui, pourquoi le cache de bloc doit-il être désactivé pour désactiver FPC dans la page de paiement ou de panier? En fait, le cache de blocs n'est désactivé que si la page entière est mise en cache.
Alex
Je viens de vérifier le code source qui contrôle les cookies utilisateur. Si l'utilisateur a bloqué le cookie, FPC bloque les caches. La fonction _getCookie renvoie l'instance Enterprise_PageCache_Model_Cookie qui contrôle le cookie utilisateur.
Oğuz Çelikdemir
Qu'est-ce que cela a à voir avec le cookie? Et de quelle ligne de code parlez-vous? confus
Alex
Alex, ce soir, je vais vérifier à nouveau et vous envoyer les blocs de code nécessaires.
Oğuz Çelikdemir