Automatiser la suppression automatique du cache de WordPress – Squad Engineering

On pense que plus de 30% des sites sur le Web sont sur WordPress (source). Pour garder ces sites fluides, beaucoup d'optimisations sont faites. Le plus souvent, les pages Web sont mises en cache afin de pouvoir être servies de manière ridiculement rapide. WordPress fournit un plugin Autoptimize qui fait de telles optimisations et plus pour vous.Autoptimize minimise et met en cache les styles et les scripts de votre page Web et les stocke sur le serveur. Ces données peuvent continuer à s'accumuler et prendre beaucoup d'espace si votre site est lourd ou charge beaucoup de ressources en quelques jours.Pour résoudre ce problème, vous devez vous connecter à la page d'administration WordPress et à partir des options d'Autoptimize plugin, supprimez le cache manuellement. Cela peut être une tâche fastidieuse et vous aspirez peut-être à l'automatiser. Chez Squad, nous avons également rencontré ce problème. Malheureusement, peu d'informations étaient disponibles sur le Web sur la manière d'y parvenir. Heureusement, il y a maintenant:) Si vous avez juste besoin de la solution et ne souhaitez pas lire les problèmes rencontrés en cours de route, n'hésitez pas à passer à la section «La solution».

  • Ajout d'un cron qui supprime périodiquement les fichiers de cache directement sur le serveur
  • Frapper périodiquement l'API que WordPress utilise lorsque vous supprimez le cache manuellement de l'administrateur
  • (J'ai réussi sur la 2ème solution donc je ne cherchais plus)

    1) Ajout d'un cron qui supprime périodiquement les fichiers de cache directement sur le serveur

    Autoptimize possède un répertoire de cache sur le serveur où il stocke toutes les données mises en cache. Si vous avez choisi l'option de supprimer les fichiers directement sur le serveur, voici une surprise – tous les fichiers ne sont pas censés être supprimés. Si vous supprimez tous les fichiers, votre site Web cessera de charger toutes les ressources. Vous pourriez donc penser: "Pas de problème, je vais simplement supprimer les fichiers qui sont censés être supprimés." Ah! Voici une autre surprise – puisque ces fichiers sont minifiés et générés automatiquement, vous ne pourrez pas déterminer le fichier à supprimer à moins de régénérer tout l'environnement dans lequel ils ont été générés. Vous pouvez essayer de le faire si vous avez beaucoup de du temps libre et une bonne compréhension du flux de code WordPress mais je ne le garantis pas.

    2) Frapper périodiquement l'API que WordPress utilise lorsque vous supprimez manuellement le cache de l'administrateur

    Si vous tracez la demande effectuée lorsque vous effacez le cache manuellement depuis l'administrateur (à l'aide de Chrome Dev Tools ou similaire), voici à quoi ressemblerait la demande (Image1) Image 1Focus sur l'URL de la demande. Il s'agit de l'URL de l'API que vous souhaitez afficher. Remarquez les paramètres de la requête (Image 2) Image 2Vous verrez "nonce". Cela signifie que chaque fois que vous effectuez la demande, WordPress génère un nonce et l'envoie au backend pour valider si la demande provient d'un compte WordPress authentifié. Sinon, il ferme l'accès à l'API. Maintenant, si nous ignorons le problème nonce, cela fonctionnerait-il? Pas assez. Si vous copiez cette demande en tant que cURL, voici ce que vous verrez (Image 3) Image 3 Remarquez que le long de tous les en-têtes, un cookie est transmis. L'en-tête Cookie est essentiel car WordPress dispose d'une autre couche de sécurité où il empêche toute API d'accéder à quoi que ce soit si la demande ne provient pas d'un navigateur sur lequel les cookies sont activés.Pour pouvoir envoyer le cookie dans cette API, vous devez avoir un autorisé Cookie d'un utilisateur authentifié connecté, vous devez donc cliquer sur l'API de connexion qui fournirait un cookie autorisé dans la réponse.Le dernier problème avec cela est que lorsque vous appuyez sur l'API de connexion, il a également besoin de la prise en charge des cookies (non, ce n'est pas pas Inception: P). La bonne chose à propos de ce cookie est qu'il n'a pas besoin d'être un cookie valide.Considérant tous ces problèmes, voici un ensemble d'étapes finales qui résoudraient ce problème une fois pour toutes.

    Débarrassez-vous du problème «nonce»

  • Ouvrez le fichier autoptimizeToolbar.php (généralement trouvé sur le chemin wp-content / plugins / autoptimize / classes / autoptimizeToolbar.php) dans n'importe quel éditeur de shell de votre choix
  • Recherchez la fonction delete_cache () et commentez la première ligne comme indiqué ci-dessous (Image 4)
  • Enregistrez le fichier et quittez l'éditeur
  • Image 4

    Appuyez sur l'API de connexion avec le cookie valide ayant une valeur fictive

    a) Extraire la clé du cookie

  • Connectez-vous à l'administrateur WordPress
  • Ouvrez les outils de développement Chrome (appuyez sur F12)
  • Accédez à l'onglet «Application», développez l'onglet «Cookies» à gauche et choisissez l'URL de votre site WordPress comme indiqué ci-dessous (Image 5)
  • Copiez le nom qui commence par «wordpress_logged_in» (comme indiqué ci-dessus avec un rectangle rouge). Ceci est la clé de votre cookie
  • Image 5b) Frappez l'API de connexion avec une demande cURL comme suit (Image 6): Image 6

  • Remplacez la valeur dans «log» par votre nom d'utilisateur admin WordPress
  • Remplacez la valeur dans "pwd" par votre mot de passe administrateur WordPress (s'il affiche un mot de passe incorrect, assurez-vous d'encoder les caractères spéciaux, le cas échéant, dans votre mot de passe)
  • Remplacez la clé du cookie envoyé par la clé que nous avons extraite à l'étape a) de ce point
  • Remplacez l'URL par l'URL de votre site WordPress. Assurez-vous de conserver wp-login.php à la fin pour vous assurer que vous atteignez l'API de connexion
  • Extraire la valeur autorisée du cookie du fichier cookies.txt (comme mentionné dans la demande cURL ci-dessus)

    Voici un aperçu du fichier cookies.txt (Image 7) Image 7Image 8

  • La valeur marquée en rouge est celle dont nous avons besoin (Image 7). Pour y parvenir par programme, vous aurez besoin d'une combinaison de grep et sed comme ci-dessus (Image 8)
  • Dans la commande ci-dessus, remplacez «nom d'utilisateur» par votre nom d'utilisateur administrateur WordPress (aux deux endroits)
  • La sortie sera la valeur qui a été marquée avec la surbrillance rouge (dans l'image 7)
  • Appuyez sur l'API de suppression du cache avec la valeur de cookie correcte

    Image 9

  • Étant donné que vous ferez tout cela dans un script .sh pour pouvoir l'exécuter par cron, je suggère de stocker la valeur de l'étape précédente dans une variable ($ var dans ce cas), puis de l'utiliser pour frapper le API comme ci-dessus (Image 9)
  • Remplacez l'URL par l'URL de votre site WordPress
  • Remplacez la clé de cookie par celle dérivée à l'étape a) avant
  • Une fois que vous avez exécuté cette demande, elle doit renvoyer "true", ce qui marque la réussite de la demande
  • Créer un script (si ce n'est déjà fait) ayant toutes les étapes ci-dessus et l'ajouter à un cron

    Pourquoi la mise en cache est-elle importante

    La mise en cache est importante car elle permet de réduire la charge sur vos serveurs d’hébergement WordPress et de réaliser fonctionner votre forum ou votre site web plus rapidement. Vous devez mettre in situ une mise en cache adéquate pour développer la vitesse et les performance de votre WordPress. Un position web plus rapide améliore l’expérience des fans et encourage à visiter davantage de pages. Cela vous permet également de renforcer la garantie et le temps que les fans passent sur votre site web. Un site web plus rapide vous donne l’opportunité d’augmenter le traite vers votre site web grâce à la recherche organique. Google donne un avantage SEO significatif aux sites internet plus rapides, ce qui vous donne l’opportunité d’avoir un meilleur classement dans les résultats de recherche. Cela étant dit, examinons les meilleurs plugins convenable en cache WordPress que vous avez la possibilité utiliser pour augmenter la vitesse de votre blog web.

    vince

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *