Je reçois le message d'erreur suivant plusieurs fois par jour, et ma connaissance du fonctionnement interne de Magento CE 1.9.0.1 est suffisamment fine pour que je ne sache pas si c'est un comportement normal et consultatif de Magento, ou s'il est révélateur. moi j'ai un mauvais problème.
Voici le message:
Un ou plusieurs types de cache sont invalidés: bloque la sortie HTML. Cliquez ici pour accéder à la gestion du cache et actualiser les types de cache.
L'actualisation de ce cache particulier fait disparaître le problème pendant quelques heures.
Je n'édite actuellement pas de mises en page, de produits, etc., rien du tout.
Qu'est-ce qui ne va pas et comment puis-je le corriger?
ce-1.9.0.1
block-cache
Dave G
la source
la source
Réponses:
Tout d'abord, il est important de comprendre qu'il ne s'agit pas d'une erreur, mais simplement d'une notification.
Il peut y avoir une multitude de raisons pour lesquelles un cache de bloc est invalidé par les mises à jour des produits, les modifications des règles de prix du catalogue et les extensions tierces. L'exécution de cronjobs peut également invalider les caches de bloc.
Il existe des extensions de communauté disponibles (répertoriées ci-dessous) qui actualiseront vos blocs à mesure qu'ils seront invalidés.
https://github.com/tomasinchoo/Inchoo_InvalidatedBlockCacheFix
https://github.com/mklooss/Loewenstark_InvalidCache
la source
C'EST une erreur.
Il existe un problème de travail CRON (post 1.9.?) Qui exécute et invalide le cache HTML, ce qui génère des problèmes (par exemple, dans mon cas, n'a pas pu reporter la remise de prix dans le panier - donc un client se verrait facturer un montant incorrect).
Nous ne devrions pas avoir besoin d'exécuter une extension pour résoudre un problème qui a été introduit!
la source
Il s'agit d'une opération Magento standard à partir de 1.6.xx et plus. Quelque chose provoque toujours une invalidation aléatoire du cache de bloc html.
Je viens de mettre en place un observateur qui se déclenche sur une tâche périodique cron, définir tout intervalle semble approprié.
Observer.php
config.xml
la source
Cet indicateur de cache invalidé est probablement lié au cron dailyCatalogUpdate. Il est responsable de l'application / l'actualisation des règles de catalogue.
Une fois par jour, il appelle
Mage::getSingleton('catalogrule/rule')->applyAll();
.Dans le code de cette méthode, il y a un appel à
$this->_invalidateCache()
, qui à son tour appelle$this->_app->getCacheInstance()->invalidateType()
leblock_html
cache.Le problème est qu'il invalide le cache sans effectuer aucune vérification pour déterminer s'il peut toujours être valide. Pour moi, cela vaut mieux que de ne pas invalider le cache, car alors vous pouvez au moins savoir qu'il pourrait être invalide et utiliser quelque chose comme ce que Fiasco Labs a suggéré pour vider les données mises en cache (potentiellement) invalides.
Il s'agit alors de décider si vous voulez faire une erreur du côté de:
A) Montrer aux clients le mauvais prix, mais garder le cache et donc avoir moins de charge sur le serveur
ou
B) Montrant le prix correct, mais ayant plus de ratés de cache, et donc une charge de serveur plus élevée.
Il y a deux choses difficiles en informatique: nommer les choses et invalider le cache .
la source
voir ici la solution: https://magento.stackexchange.com/a/72687
Modifiez fondamentalement la fonction dailyCatalogUpdate de app / code / local / Mage / CatalogRule / Model / Observer.php en
la source