WordPress 6.8 a rendu le Speculative Loading disponible nativement, un mécanisme qui précharge une page par simple survol d’un lien — y compris, sans précaution particulière, une page contenant les résultats d’analyses d’un patient. C’est ce risque précis qui a été posé avant d’activer la fonctionnalité sur le thème d’un site proposant un espace patient sécurisé permettant de consulter certains documents médicaux en ligne.
Ce billet explique les risques concrets du préchargement spéculatif appliqué sans discernement à ce type de site, et les exclusions posées pour en limiter l’exposition. Il ne traite ni l’hébergement HDS du site, ni le chiffrement des données elles-mêmes — uniquement le comportement de préchargement côté navigateur.
Ce que fait réellement le Speculative Loading
Le Speculative Loading repose sur l’API Speculation Rules du navigateur : le site déclare des règles indiquant quelles pages peuvent être préchargées ou pré-rendues en fonction du comportement de l’utilisateur (survol d’un lien, présence dans le viewport). WordPress 6.8 intègre nativement la génération de ces règles pour les liens internes du site, avec un niveau d’agressivité configurable.
{
"prefetch": [
{
"source": "document",
"where": { "and": [{ "href_matches": "/*" }] },
"eagerness": "moderate"
}
]
}
Sur un site classique, ce mécanisme réduit le temps de chargement perçu : la page suivante est déjà partiellement récupérée au moment où l’utilisateur clique réellement dessus. Le problème apparaît dès qu’une de ces pages préchargées contient des informations que l’utilisateur n’avait pas l’intention de consulter à cet instant précis.
Le risque spécifique d’un espace patient
Sur ce site, l’espace patient liste les documents disponibles (comptes rendus, résultats d’examens) sous forme de liens individuels. Avec une règle de préchargement générique appliquée à l’ensemble du site, un simple survol accidentel de la souris sur un de ces liens — sans clic, sans intention réelle de consultation — suffisait à déclencher le chargement anticipé du document médical correspondant.
Où ce préchargement laisse une trace
- Dans l’historique de requêtes réseau du navigateur, consultable par toute personne ayant accès physique à l’appareil
- Potentiellement dans le cache du navigateur, selon les en-têtes de cache renvoyés par le serveur pour ce document
- Dans les journaux serveur, qui enregistrent une requête de consultation alors qu’aucune consultation réelle n’a eu lieu de la part de l’utilisateur
Ce dernier point pose un problème de traçabilité important pour un établissement de santé : un journal d’accès qui enregistre des consultations de documents jamais réellement lues par le patient devient un journal peu fiable, alors même que la traçabilité des accès aux données de santé constitue une exigence centrale du secteur.

Les exclusions posées sur ce thème
La correction n’a pas consisté à désactiver totalement le Speculative Loading sur le site — les pages publiques (accueil, présentation des services, articles de blog santé) bénéficient toujours de son gain de performance. L’exclusion cible précisément l’espace patient authentifié.
add_filter( 'wp_speculation_rules_configuration', function ( $config ) {
if ( is_page_template( 'template-espace-patient.php' ) || is_user_logged_in() ) {
return array(); // aucune règle de spéculation sur ces contextes
}
return $config;
} );
Cette exclusion binaire — tout ou rien dès qu’un utilisateur est connecté à l’espace patient — a été préférée à une exclusion plus fine par type de lien, jugée trop risquée : le coût d’une règle mal configurée sur ce type de contenu dépasse largement le bénéfice de performance espéré sur cet espace précis.
Conserver le bénéfice ailleurs
Sur les pages publiques du site, sans donnée sensible, le Speculative Loading reste activé avec un niveau d’agressivité modéré, apportant un gain de performance perceptible sans risque équivalent : ces pages ne contiennent par nature aucune information dont la simple précharge poserait un problème de confidentialité.
Sur un site à contenu mixte, ne traitez jamais le Speculative Loading comme un réglage global. Identifiez explicitement les zones sensibles et excluez-les nommément, plutôt que d’espérer qu’une configuration unique convienne partout.
Notion à retenir
Le Speculative Loading apporte un gain de performance réel, mais son principe même — anticiper une intention de navigation avant qu’elle ne soit confirmée — entre en tension directe avec toute zone d’un site où la simple consultation d’une page constitue déjà une information sensible. Sur un site de santé, cette tension impose de désactiver explicitement le mécanisme sur les espaces authentifiés donnant accès à des documents personnels, sans pour autant renoncer à son bénéfice sur les pages publiques du même site.