Skip to content

Optimisation du temps de chargement des dashboards

Il est important d'optimiser le temps de chargement des dashboards afin que l'expérience utilisateur soit optimale. Voici quelques points à vérifier avant de mettre votre dashboard en production.

1. Eviter les filtres dynamiques hiérarchiques

Dans un filtre dynamique, il existe une option Refresh filters on right after choice. Cette option est couteuse en temps de chargement. Si vous n'avez pas besoin de cette option, désactivez-la sur vos filtres.

La raison est que quand cette option est activée, notre moteur va d'abord obtenir les valeurs pour le premier filtre, une fois qu'il les a obtenues, il va exécuter la requête pour obtenir les valeurs du second filtre, et ainsi de suite... Cela permet de remplir les filtres uniquement avec les valeurs possibles et c'est très pratique si les dimensions filtrées sont hiérarchiques (e.g. pays et région, catégorie et sous-catégorie). Mais dans tous les autres cas, c'est souvent inutile, et mieux vaut désactiver cette option pour accélérer le dashboard.

2. Eviter les onglets avec beaucoup de widgets

Quand un dashboard est chargé, tous les widgets de l'onglet en cours vont exécuter une requête pour obtenir leurs données. Si l'onglet a beaucoup de widgets, cela peut être long.

Un conseil simple est donc de diviser vos onglets trop longs en plusieurs onglets plus rapides à charger.

3. Vérifiez que votre cache est correctement configuré

Serenytics dispose d'un moteur de cache. Quand celui-ci est activé sur une datasource, le résultat d'une requête sur cette datasource sera stocké dans une base de données très rapide. Lorsque cette même requête de donnée sera re-demandée, alors notre moteur va juste lire le résultat déjà calculé dans cette base, et non exécuter la requête sur la datasource. Le résultat est alors quasi-immédiat pour l'utilisateur.

Voici comment configurer au mieux ce cache en fonction de votre cas d'utilisation.

Cas 1 : Données mises à jour tous les jours

C'est souvent le meilleur compromis entre récence des données et rapidité d'affichage du dashboard.

Quelle que soit votre source de données, le process est le même :

  • dans la configuration de votre source, cliquez sur "Mettre les données en cache" et choisissez l'option "jusqu'à invalidation du cache"
  • dans le menu "Automation", créez une nouvelle tâche de type "Refresh dashboards cache" et programmez-la pour qu'elle s'exécute tous les jours (par ex. tous les matin à 3h). Choisissez le ou les dashboards dont le cache doit être rafraîchit. Tous les caches des sources utilisées dans ces dashboards seront automatiquement invalidés lors de l'exécution de la tâche, et les nouvelles données seront remises en cache. Quand un utilisateur chargera le dashboard pendant la journée, toutes les données auront déjà été chargées en cache par le script. Notre moteur de calcul n'aura rien à calculer et le temps d'affichage sera ainsi réduit au minimum.

Cas 2 : Affichage d'un dashboard à la semaine ou au mois

C'est le même principe que le point précédent. Il suffit de programmer la tâche pour qu'elle s'exécute chaque semaine ou chaque mois au lieu de chaque jour.

Cas 3 : Dashboard live

Si votre dashboard doit absolument afficher les données les plus récentes, plusieurs stratégies s'offrent à vous afin d'obtenir les meilleures performances de chargement des dashboards.

Si la source est une source de type SQL hébergée chez vous, et qu'elle n'est pas déjà saturée au niveau des performances :

Dans ce cas le plus simple est d'effectuer un appel à notre API REST d'invalidation de cache dans votre back-end, à chaque fois que vous modifiez les données.

Dans les autres cas :

Il faut synchroniser les données dans notre datawarehouse interne (et utiliser cette nouvelle source de type Storage dans vos dashboards). Pour cela, deux solutions :

  • soit via un script python qui synchronise les données de manière incrémentale, et que vous programmez par ex. toutes les 5 minutes si c'est très rapide, ou toutes les heures sinon.
  • soit en poussant les données directement dans notre datawarehouse à chaque fois qu'elles sont modifiées chez vous, en faisant appel à notre API batch depuis votre back-end.

Notes

  • Mettre à jour les données dans le datawarehouse interne de Serenytics, notamment via la méthode batch, invalidera le cache de la source automatiquement.
  • Quand vous ouvrez un dashboard, vous pouvez vérifier simplement si le cache est utilisé ou pas. Pour cela, ouvrez la console de votre navigateur (e.g. CMD+ALT+I sur Chrome). Chaque requête de données imprime une ligne avec une URL qui contient le mot formatted_data (l'uuid de la datasource est aussi dans cette URL). A la fin de cette ligne, s'il y a écrit cache=disabled, cela signifie que le cache n'est pas activé pour cette datasource. S'il y a écrit cache=miss, le cache est activé, mais le résultat n'était pas en cache. S'il y a écrit cache=hit, cela signifie que le résultat a été lu en cache (et que la requête a été très rapide).