Optimisations asynchrones
WP Rocket propose quelques optimisations asynchrones. Cela signifie que bien que les optimisations soient appliquées automatiquement, elles ne sont pas instantanées et nécessitent une série d'étapes (et du temps) avant d'être appliquées sur un site.
Les fonctionnalités suivantes sont appliquées de manière asynchrone :
- Optimiser les images critiques - Les images critiques doivent être détectées avant que leurs optimisations associées ne soient insérées dans les pages.
- Rendu différé automatique - Les éléments HTML situés sous la ligne de flottaison doivent être détectés, puis leur balisage optimisé sera appliqué aux pages.
- Supprimer les ressources CSS inutilisées - Les pages doivent être analysées et le CSS utilisé doit être généré avant d'être appliqué aux pages.
- Charger le CSS de manière asynchrone - Les différents types de pages doivent être analysés et le CSS du chemin critique doit être généré avant d'être ajouté aux pages.
Vue d'ensemble des fonctionnalités
WP Rocket utilise une approche asynchrone. Actuellement, cette approche asynchrone est appliquée sur les options Supprimer les ressources CSS inutilisées et Chargement Asynchrone du CSS.
En général, une optimisation asynchrone suit les étapes suivantes :
- Démarrage du processus avec un déclencheur
- Envoi d'informations à l'API
- Vérification du statut
- Répétition, si nécessaire
- Application de l'optimisation
Attention ! Il s'agit d'un article de niveau avancé dédié à la documentation de l'approche asynchrone en profondeur.
Conditions requises
Approche asynchrone pour Supprimer les ressources CSS inutilisées
L'approche asynchrone pour la suppression des ressources CSS inutilisées utilise les étapes spécifiques suivantes pour la génération et l'application des ressources CSS inutilisées :
- Démarrer le processus avec un déclencheur
La visite d'une page non mise en cache génère le cache de la page. Si l'option Supprimer les ressources CSS inutilisées est activée, cela déclenchera la génération des feuilles de style CSS utilisées pour cette page.
La visite peut être effectuée par le Préchargement ou par un visiteur. - Envoi d'informations à l'API
Le plugin envoie l'URL de la page à l'API. Le plugin envoie l'URL de la page à l'API. Avec le cache Mobile, le plugin enverra également des informations indiquant si la demande est destinée à un ordinateur de bureau ou à un téléphone portable.
- Vérification de l'état
Après 60 secondes, le cron de WP Rocket appellera l'API externe pour demander l'état des demandes.
Dans la base de données, chaque entrée aura un statut qui est défini en fonction de la réponse de l'API.
- Répétition, si nécessaire
Si la génération du CSS utilisé échoue la première fois, WP Rocket va réessayer de générer le CSS jusqu'à 5 fois supplémentaires.
Pour éviter de surcharger le processeur, le temps d'attente entre chaque essai sera progressivement incrémenté.
Si la génération échoue après la 5ᵉ tentative, le CSS utilisé pour l'URL spécifique sera marqué comme "échoué" dans la base de données et WP Rocket réessayera de générer le CSS utilisé dans ces cas :
- Après 3 jours.
- Le CSS utilisé pour une URL spécifique est effacé en utilisant l'élément de menu de la barre d'administration "Effacer le CSS utilisé pour cette URL" lors de la visite de l'URL dans le back-end.
- L'ensemble du CSS utilisé est effacé en utilisant l'élément de menu "Effacer les CSS utilisés" de la barre d'administration tout en visitant la page des paramètres de WP Rocket.
- L'effacement automatique des CSS utilisés a lieu.
- Application de l'optimisation
Si l'API indique que les CSS utilisés pour une page sont disponibles, lors de la prochaine visite, le cache de cette page sera effacé afin qu'un nouveau cache puisse être généré et qu'il comprenne les CSS utilisés résultants.
Là encore, cette visite peut être déclenchée par un utilisateur ou par le Préchargement.
Notes techniques sur l'approche asynchrone de la suppression des ressources CSS inutilisées
- La base de données de votre site stockera une entrée pour chaque demande d'optimisation dans une table nommée
wpr_rucss_used_css
;(une entrée pour chaque URL). - Les demandes d'optimisation sont envoyées à l'outil externe de WP Rocket, qui traite chacune d'entre elles comme un travail.
- L'outil externe a pour
API_URL
nomhttps://saas.wp-rocket.me/
. - L'API répondra et la valeur de la colonne
status
dans lewpr_rucss_used_css
tableau sera mise à jour en conséquence pour chaque entrée. - La colonne
wpr_rucss_used_css
tablestatus
aura l'une de ces cinq valeurs possibles pour chaque entrée :to-submit
- Statut initial pour toutes les pages qui sont déclenchées pour la génération de Used CSS, ce qui signifie que la page doit avoir Used CSS généré, mais que le traitement n'est pas encore planifié.pending
- État des pages qui ont été soumises pour être traitées dans le générateur, ce qui signifie que le traitement est programmé mais n'a pas encore commencé.in-progress
- Statut des pages dont le CSS utilisé est en cours de traitement par le générateur.completed
- État confirmant que le générateur a créé avec succès le CSS utilisé pour l'URL.failed
- Statut lorsqu'une requête n'a pas abouti, c'est-à-dire qu'elle n'envoie pas un code de statut200 (OK)
. Dans ce cas, les colonneserror_code
eterror_message
afficheront plus de détails.
- L'événement cron
rocket_rucss_on_submit_jobs
traitera et contrôlera combien de nouvelles URL peuvent être envoyées au générateur Used CSS (pending
status) dans chaque lot. - Le nombre maximum d'URL qui peuvent être en
attente
état à un moment donné est fixé à 300 par défaut. - Cette valeur est calculée comme étant 3 fois le nombre de la
rocket_saas_pending_jobs_cron_rows_count
valeur du filtre (qui est de 100 par défaut). - Cette limite est en place parce que si le nombre total de travaux en attente devient trop élevé, cela peut entraîner des erreurs de génération de CSS Used.
- Toutes ces demandes d'optimisation et ces vérifications d'état reposent sur WP Cron ou un cron côté serveur (de préférence).
- Si une réponse revient comme
complété
cela signifie : - Le CSS utilisé est généré et prêt à être appliqué, de sorte que le cache de l'URL sera vidé lors de la prochaine visualisation de la page.
- Les hachages des entrées seront stockés dans la base de données dans la table
wpr_rucss_used_css
.
- Le CSS utilisé est stocké sur le disque de votre serveur dans le
/cache/used-css/1/
dossier. Si vous utilisez WordPress multisite, le dossier nommé/1/
changera pour refléter le numéro du site. - Si la génération de Used CSS échoue la première fois, cela signifie que :
- Des tentatives supplémentaires de génération de Used CSS pour la page seront effectuées, pour un maximum de 5 tentatives au total. Les 5 tentatives supplémentaires ne seront effectuées que pour les URL dont la génération de Used CSS a échoué en raison d'un problème temporaire, mais elles n'auront pas lieu si l'URL ne remplit pas les conditions de base.
- Si la réponse à la demande n'est toujours pas satisfaisante après les cinq tentatives, le statut de cette page reste
failed
et les autres pages sont traitées. - Pour les pages dont le statut est
failed
, la génération du CSS utilisé sera réessayée soit après 3 jours, soit après avoir effacé le CSS utilisé de cette entrée (ou de toutes les entrées de CSS utilisé).
Filtres disponibles pour Supprimer les ressources CSS inutilisées
Les filtres suivants sont disponibles pour personnaliser la fonction Supprimer les ressources CSS inutilisées :
rocket_saas_pending_jobs_cron_rows_count
- Spécifiez le nombre de nouvelles pages que WP Rocket planifiera pour le traitement (défini surpending
le statut) dans chaque lot.- La valeur par défaut est 100 URLs.
rocket_saas_pending_jobs_cron_interval
- Définissez l'intervalle de temps entre chaque demande de programmation de pages supplémentaires à traiter.- La valeur par défaut est 60 secondes.
rocket_rucss_max_pending_jobs
- Définit le nombre maximum d'URL qui peuvent être enpending
état à un moment donné.- La valeur par défaut est 300, ce qui correspond à 3 fois la valeur du
rocket_saas_pending_jobs_cron_rows_count
filtre.
- La valeur par défaut est 300, ce qui correspond à 3 fois la valeur du