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?

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)


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).


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.