web-dev-qa-db-fra.com

W3 Total Cache, CDN et fichiers de thème

J'ai récemment mis à jour le fichier style.css de mon installation WordPress. Les changements ont été effectifs: lorsque je suis connecté en tant qu'administrateur (mon blog est configuré pour 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 diffusé via un CDN (utilisant W3 Total Cache). Par le biais du CDN, les modifications ne sont pas effectives: 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 (Tableau de bord> Performances> CDN> Télécharger des fichiers de thème).

Mon CDN s'exécute sur AmazonCloud Front. Et Minify est désactivé sur W3 Total Cache.

Le fichier de thème utilisé par 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 modifications prennent effet. Ou y a-t-il autre chose qui me manque?

Merci,

P.

10
Parneix

Vous devez soit

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

  2. Annulez manuellement vos fichiers via la console AWS (un onglet d'invalidation existe lorsque vous modifiez votre distribution).

Pour activer les "chaînes de requête", procédez comme suit:

  • Modifiez votre distribution Cloudfront en cochant la case située à gauche du "i", puis cliquez sur le bouton "paramètres de distribution" dans la barre d'outils.
  • Aller sur l'onglet Comportements
  • Sélectionnez la ligne et cliquez sur 'Editer'
  • Remplacez "chaînes de requête" par Oui
  • Cliquez sur "Oui, Editer"
10
anu

Il y a tout simplement une "astuce" pour empêcher la mise en cache, lorsque le contenu du fichier est modifié: Ajoutez un numéro de version, qui est défini sur la dernière date/heure de la modification de 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' )
    );
}

Ceci 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 du fichier 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.

8
kaiser