W3 Total Cache, CDN et fichiers de thème [fermé]

10

J'ai récemment mis à jour le fichier style.css de mon installation WordPress. Le changement a été efficace: lorsque je suis connecté en tant qu'administrateur (mon blog est configuré de manière à ce que l'administrateur ne reçoive jamais une version en cache du site, mais une version «en direct»), je peux les voir.

Mais mon blog est servi via un CDN (en utilisant W3 Total Cache). Grâce au CDN, les changements ne sont pas effectifs: le CDN ne sert pas les fichiers modifiés de mon thème. Même si je les ai téléchargés après modification (Dashboard> Performance> CDN> Upload theme files.

Mon CDN fonctionne sur AmazonCloud Front. Et Minify est désactivé sur W3 Total Cache.

Le fichier de thème servi via mon CDN est une version compressée: style.css.gzip

Dois-je «purger» des objets de mon CDN ou attendre un peu plus (cela fait plus d'une semaine). Et oui, je vide le cache du navigateur que j'utilise pour voir que les changements prennent effet. Ou y a-t-il autre chose qui me manque?

Merci,

P.

Parneix
la source

Réponses:

10

Vous devez soit

  1. Versionnez vos fichiers (en l'appelant style.css?ver=xxx.xxx) et assurez-vous que votre distribution CloudFront a activé les "chaînes de requête". C'est la meilleure option, car cela signifie que tout ce que vous devez faire est d'incrémenter le nombre dans la chaîne de requête et CloudFront récupérera automatiquement ce fichier.

  2. Invalidez manuellement vos fichiers via la console AWS (il y a un onglet d'invalidation lorsque vous modifiez votre distribution)

Pour activer les «chaînes de requête avancées», procédez comme suit:

  • Modifiez votre distribution Cloudfront en cochant la case à gauche du 'i' puis cliquez sur le bouton "Paramètres de distribution" dans la barre d'outils
  • Accédez à l'onglet Comportements
  • Sélectionnez la ligne et cliquez sur «Modifier»
  • Remplacez "chaînes de requête de transfert" par Oui
  • Cliquez sur "Oui, modifier"
anu
la source
1
@kaiser yup, le datetime comme version est le meilleur moyen de versionner le fichier. Cependant, vous devez toujours vous assurer que l'option "Forward Query Strings" est activée dans CloudFront, sinon votre numéro de version bien conçu sera ignoré: P
anu
Je vous remercie. J'ai deux questions à vous poser car je ne connais pas cette procédure. 1) Le nom des fichiers «versionnés» doit suivre exactement l'exemple que vous avez donné (avec le point d'interrogation, les signes égaux et remplacer tous les «x» par des nombres de mon choix), n'est-ce pas? 2) Sur ma console AWS pour CLoudFront, je clique sur le «I» à gauche du tableau juste à côté de la distribution que j'ai créée pour mon blog. Cela me permet d'accéder aux paramètres de la distribution. Là, je peux voir que les "chaînes de requête vers l'avant" sont "fausses". Dois-je répliquer ce "comportement" avec les mêmes valeurs mais avec "true" pour "For. Q. strings"
Parneix
1
1. oui ou vous pouvez utiliser la réponse bien intentionnée mais incomplète de @ kaiser pour nommer votre fichier. 2. Je mettrai à jour la réponse avec le processus
anu
8

Il existe tout simplement une «astuce» pour empêcher la mise en cache, lorsque le contenu du fichier a changé: Ajoutez un numéro de version, qui est défini sur la dernière date / heure à laquelle vous avez modifié votre fichier.

add_action( 'wp_enqueue_scripts', 'wpse61738_non_cached_stylesheet' );
function wpse61738_non_cached_stylesheet()
{
    wp_enqueue_style( 
        'style-main',
        get_stylesheet_directory_uri().'/style.css',
        array(),
        filemtime( get_stylesheet_directory().'/style.css' )
    );
}

Cela s'ajoutera ?ver=0123456789à votre lien de référence style.css dans votre en-tête. Le numéro de version ne changera que lorsque le contenu des fichiers sera modifié. Vous avez donc une solution qui fonctionne parfaitement avec a) le cache côté serveur b) le cache du navigateur et s'actualise automatiquement.

kaiser
la source
Ok, c'est une option vraiment intéressante: elle supprime la nécessité de versionner manuellement mon style.cssfichier après chaque modification (ce que j'oublierai de faire à un moment ou à un autre). Maintenant, si je peux demander, où dois-je ajouter ce code? Je devinerais mon functions.phpdossier?
Parneix
Je ne sais pas, où vous devez ajouter ce code. Recherchez simplement dans vos fichiers de thèmes et remplacez l'appel "normal" au fichier style.css. Je publierai une courte mise à jour, afin que vous puissiez la mettre dans votre fichier functions.php (cela signifie toujours que vous devez supprimer l'appel d'origine). Et btw: Ce n'est qu'un ajout à la réponse @anu. (Les votes positifs sont toujours appréciés :)
kaiser
1
Aucun problème! Je comprends parfaitement que l'emplacement de ce code est susceptible de changer en fonction du thème utilisé. J'arriverai à l'ajouter à mon functions.phpfichier. Je pense toujours que c'est un bon complément à la solution fournie par @anu. Merci beaucoup pour l'aide.
Parneix
-1

une réponse courte ...

  1. Supprimez tous vos fichiers de thème et téléchargez-les à nouveau. parfois, l'action de suppression efface le CDN

  2. Oui, vous pouvez essayer Purger - mais Supprimer et re-télécharger est généralement plus rapide.

  3. Consultez également les paramètres du W3TC et d'Amazon. Le cache par défaut du W3TC est généralement de 365 jours. soit 31536000 secondes :)

Dans Amazon .. il y aura un paramètre pour que les points de terminaison interrogent à nouveau le CDN. Je sais que dans Rackspace, la valeur par défaut est de 24 heures.

Damien
la source
1
Là , il y a de bien meilleures façons de faire que cela, voir ma réponse
anu
"Supprimez tous vos fichiers de thème et téléchargez-les à nouveau. Parfois, l'action de suppression efface le CDN "Vous voulez dire pour moi de les supprimer sur mon site Web, non? Ensuite, téléchargez-les à nouveau dans mon installation WordPress. Et ensuite, je suppose que vous devez à nouveau "Télécharger les fichiers de thème" via le tableau de bord W3 Total Cache?
Parneix
1
@Parneix sérieusement, ne supprimez pas tout sauf si vous y êtes obligé. Cela ne fonctionnera presque certainement que si vous supprimez également tout du CDN. Il y a BEAUCOUP de meilleures façons d'invalider votre fichier CSS
périmé
1
Oui merci! J'ai bien pris note de votre suggestion. J'apprécie vraiment toute l'aide que je reçois ici. Non seulement je résous mon problème, mais j'apprends aussi de nouvelles choses.
Parneix