Mon panier est mis en cache par le cache total w3. C'est le comportement par défaut attendu. La chose est que je ne peux pas trouver une solution facile pour cela.
Je montre mon panier d’achat sur presque toutes les pages. L’utilisation de cookies refusés ou de quelque chose de similaire n’est donc pas une option. Est-il possible de dire à w3 total cache de ne pas mettre en cache un seul fichier php tel que cart_widget.php? Ou une autre solution de contournement?
Je sais qu'il est possible de charger le panier via ajax car le plug-in ne met pas en cache les requêtes GET avec les paramètres (par défaut). Néanmoins, je voudrais éviter cette demande supplémentaire.
EDIT: De plus, le cache total w3 ne régénère pas la page lorsque je modifie le produit, existe-t-il un moyen facile de dire à w3 Total Cache de vider le cache pour une seule page?
Pour exclure une page de la mise en cache, utilisez l’une des commandes suivantes:
define('DONOTCACHEPAGE', true);
Disables page caching for a given page.
define('DONOTCACHEDB', true);
Disables database caching for given page.
define('DONOTMINIFY', true);
Disables minify for a given page.
define('DONOTCDN', true);
Disables content delivery network for a given page.
define('DONOTCACHCEOBJECT', true);
Disables object cache for a given page.
Pour que W3 Total vide le cache de votre produit, vous pouvez associer la fonction suivante lors de l’enregistrement du produit:
w3tc_pgcache_flush_post($post_id);
Pour implémenter la mise en cache de fragments, enveloppez les fonctions ou les lignes de code que vous ne voulez pas mettre en cache dans un fichier mfunc:
Example 1:
<!-- mfunc any PHP code --><!-- /mfunc -->
Example 2:
<!-- mfunc -->any PHP code<!-- /mfunc -->
Example 3:
<!--MFUNC -->
echo Rand();
<!--/mfunc -->
Example 4:
<!-- mclude path/to/file.php --><!-- /mclude -->
Example 5:
<!-- mclude -->path/to/file.php<!-- /mclude -->
W3, comme tous les autres plugins de ce type, met en cache la sortie de page dans un fichier statique. Fondamentalement, une partie du fichier statique ne peut pas être non statique.
Je ne suis pas un expert dans ce domaine, mais je suggérerais de regarder dans les cookies après tout. Par exemple, vous pouvez essayer de laisser le cache pour les pages avec un panier vide, mais faites en sorte que le panier rempli définisse un cookie et ignore la mise en cache de ce contenu.