web-dev-qa-db-fra.com

Classes de corps de tête et conflit de cache de page W3TC

Je travaille actuellement sur un site web utilisant WordPress, Headway , Modernizr et W3 Total Cache. Le problème que je rencontre est que W3TC met en cache la balise body, ce qui signifie que celle-ci n'est pas mise à jour en fonction du navigateur de l'utilisateur par Modernizr.

Par exemple, modernizr ajoute la classe de corps 'firefox' à un problème. Si cette dernière est ensuite mise en cache, cette même classe de corps 'firefox' rend le css spécifique à chaque navigateur inexact.

J'ai essayé d'utiliser <!-- mfunc -->any PHP code<!-- /mfunc --> que j'ai obtenu de cette réponse

Le code ressemble à ceci

<!-- mfunc -->
headway_page_top();
<!-- /mfunc -->

J'ai essayé d'utiliser le même wrapper mfunc à l'intérieur de la fonction headway_page_top () de sorte qu'il se trouve directement autour de la balise body sans succès. L'erreur que je reçois vient de W3TC et dit 'Impossible d'exécuter du code:' et ensuite tout le balisage encapsulé par le mfunc est imprimé (en mode débogage). Cela se produit également lorsque le mode débogage est désactivé.

Cet appel se passe dans wp-content/themes/headway-2012/header.php, et j'ai ajouté ce chemin d'accès à la liste des exceptions de cache dans les paramètres de cache de page W3TC, mais en vain.

Quelqu'un a-t-il des suggestions quant à la manière dont je peux avoir le cache de pages exécuté côte à côte avec modernizr sans avoir ce problème?

EDIT: Ce problème n'a rien à voir avec Modernizr, j'ai sauté le flingue en pensant que c'était le cas. Headway ajoute lui-même la classe body et n'utilise pas modernizr pour le faire. Le problème utilise W3TC et son fragment pour que la classe de corps reste dynamique. Je n'ai pas réussi à faire fonctionner la mise en cache de fragments, ni à trouver beaucoup de documentation à ce sujet.

La mise en cache de fragments est-elle une solution réalisable? Je semble être à court de solutions possibles.

1
supajb

La mise en cache ne devrait pas affecter Modernizr car il s’agit d’un script côté client et s’exécutera à chaque visite de la page.

Je n'ai pas utilisé Headway, mais d'après ce que vous décrivez, il semble qu'un script côté serveur dans Headway détecte le navigateur et que le résultat soit mis en cache.

Cela a-t-il du sens?

1
matchdav