Avril 2022 : un musée en ligne ouvre un nouvel espace de collection permanente sur son site WordPress headless, avec près de 3 000 œuvres cataloguées et indexées dans Algolia pour la recherche. Le job de synchronisation, exécuté chaque nuit à heure fixe, publiait le lendemain matin toute œuvre ajoutée la veille — un délai jugé acceptable jusqu’à ce qu’une exposition temporaire, avec des ajouts de catalogue au fil de la journée d’ouverture, révèle la limite de cette approche.
Ce cas ne traite pas de la performance du front qui consomme l’index Algolia, mais uniquement de la mécanique de synchronisation entre WordPress et Algolia, et du passage d’un traitement par lot à un déclenchement événementiel.
Le problème du lot quotidien
Le job nocturne, une tâche planifiée exécutée via wp_schedule_event, parcourait l’intégralité des œuvres modifiées depuis la dernière exécution et les envoyait à Algolia en un seul lot. Cette approche fonctionnait bien tant que les publications suivaient un rythme prévisible — quelques ajouts par semaine — mais s’est révélée inadaptée le jour où l’équipe de médiation culturelle a commencé à publier de nouvelles fiches d’œuvres en cours de journée, pendant l’ouverture d’une exposition, avec l’attente légitime qu’elles apparaissent immédiatement dans la recherche du site.
Le déclenchement à la publication
Le correctif a consisté à remplacer le déclenchement temporel par un déclenchement sur l’action WordPress save_post, filtrée sur le type de contenu concerné, avec une synchronisation immédiate vers Algolia à chaque publication ou mise à jour d’une œuvre :

add_action('save_post_oeuvre', function ($post_id, $post, $update) {
if (wp_is_post_revision($post_id) || $post->post_status !== 'publish') {
return;
}
$index = algolia_get_index('oeuvres');
$index->saveObject([
'objectID' => $post_id,
'titre' => get_the_title($post_id),
'artiste' => get_field('artiste', $post_id),
'periode' => get_field('periode', $post_id),
'salle' => get_field('salle_exposition', $post_id),
'extrait' => wp_trim_words(get_the_excerpt($post_id), 40),
]);
}, 10, 3);
add_action('before_delete_post', function ($post_id) {
if (get_post_type($post_id) === 'oeuvre') {
algolia_get_index('oeuvres')->deleteObject($post_id);
}
});
Ce changement a réduit le délai entre publication et disponibilité en recherche de vingt-quatre heures, dans le pire des cas, à quelques secondes seulement — le temps de l’appel API vers Algolia lui-même.
Un filet de sécurité conservé
Le job nocturne n’a pas été supprimé pour autant : il continue de tourner une fois par jour, mais avec un rôle différent, celui de rattraper les écarts éventuels — un appel Algolia qui aurait échoué silencieusement, une modification effectuée directement en base sans passer par l’action save_post. Cette double couche, synchronisation immédiate et rattrapage quotidien, s’est révélée plus robuste que l’un ou l’autre mécanisme pris isolément.
La désindexation, un sujet à part entière
Le passage à un déclenchement événementiel a aussi mis en lumière un oubli initial : la dépublication d’une œuvre, par exemple lors du retrait temporaire d’une pièce prêtée à une autre institution, ne déclenchait aucune désindexation. Le hook save_post_oeuvre a donc été complété par une vérification du statut, retirant de l’index toute œuvre dont le statut passe à autre chose que publish.
Ce que ce cas retient
- Un traitement par lot introduit toujours un délai, même court, entre la publication et sa visibilité effective.
- Un déclenchement événementiel élimine ce délai, au prix d’une gestion plus fine des cas d’échec ponctuels.
- Conserver un filet de sécurité périodique reste une bonne pratique, même une fois la synchronisation en temps quasi réel en place.
La fraîcheur perçue d’un catalogue ne se mesure pas à la rapidité du moteur de recherche, mais au délai entre le moment où un contenu existe réellement et le moment où il devient trouvable.
En résumé
Passer d’une synchronisation nocturne à un déclenchement à la publication n’a rien changé à la manière dont Algolia indexe ou classe les résultats : cela a seulement raccourci le délai avant qu’une nouvelle œuvre ne devienne visible en recherche, un détail qui compte particulièrement pour une institution culturelle dont le rythme de publication suit celui de ses expositions, pas celui d’un calendrier fixe.