Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

Firebase Performance Monitoring pour le Web

Dans cet atelier de programmation, vous apprendrez à utiliser Firebase Performance Monitoring pour mesurer les performances d'une application Web de chat. Visitez https://fireperf-friendlychat.web.app/ pour voir une démo en direct.

3b1284f5144b54f6.png

Ce que tu apprendras

  • Comment ajouter Firebase Performance Monitoring à votre application Web pour obtenir des métriques prêtes à l'emploi (chargement de page et requêtes réseau).
  • Comment mesurer un morceau de code spécifique avec des traces personnalisées.
  • Comment enregistrer des métriques personnalisées supplémentaires liées à une trace personnalisée.
  • Comment segmenter davantage vos données de performances avec des attributs personnalisés.
  • Comment utiliser le tableau de bord de surveillance des performances pour comprendre les performances de votre application Web.

Ce dont vous aurez besoin

  • L'EDI ou l'éditeur de texte de votre choix, tel que WebStorm , Atom , Sublime ou VS Code
  • Un terminal / console
  • Un navigateur de votre choix, tel que Chrome
  • Exemple de code du laboratoire de codes (voir la section suivante de ce laboratoire de codes pour savoir comment obtenir le code.)

Clonez le référentiel GitHub du codelab à partir de la ligne de commande:

git clone https://github.com/firebase/codelab-friendlychat-web

Sinon, si vous n'avez pas installé git, vous pouvez télécharger le dépôt sous forme de fichier zip .

Importez l'application de démarrage

À l'aide de votre IDE, ouvrez ou importez le répertoire 📁 performance-monitoring-start partir du référentiel cloné. Ce répertoire 📁 performance-monitoring-start contient le code de démarrage du codelab, qui est une application Web de chat.

Créer un projet Firebase

  1. Dans la console Firebase , cliquez sur Ajouter un projet .
  2. Nommez votre projet Firebase FriendlyChat .

Souvenez-vous de l'ID de projet de votre projet Firebase.

  1. Cliquez sur Créer un projet .

Ajouter une application Web Firebase au projet

  1. Cliquez sur l'icône Web 58d6543a156e56f9.png pour créer une nouvelle application Web Firebase.
  2. Enregistrez l'application avec le surnom de Friendly Chat , puis cochez la case à côté de Configurer également Firebase Hosting pour cette application .
  3. Cliquez sur Enregistrer l'application .
  4. Cliquez sur les étapes restantes. Vous n'avez pas besoin de suivre les instructions à l'écran maintenant; ceux-ci seront traités dans les étapes ultérieures de ce codelab.

ea9ab0db531a104c.png

Activer la connexion Google pour l'authentification Firebase

Pour permettre aux utilisateurs de se connecter à l'application de chat avec leurs comptes Google, nous utiliserons la méthode de connexion Google .

Vous devrez activer la connexion Google :

  1. Dans la console Firebase, recherchez la section Développer dans le panneau de gauche.
  2. Cliquez sur Authentification , puis sur l'onglet Méthode de connexion ( accédez à la console ).
  3. Activez le fournisseur de connexion Google , puis cliquez sur Enregistrer .

d89fb3873b5d36ae.png

Activer Cloud Firestore

L'application Web utilise Cloud Firestore pour enregistrer les messages de discussion et recevoir de nouveaux messages de discussion.

Vous devrez activer Cloud Firestore:

  1. Dans la section Développer de la console Firebase, cliquez sur Base de données .
  2. Cliquez sur Créer une base de données dans le volet Cloud Firestore.
  3. Sélectionnez l'option Démarrer en mode test , puis cliquez sur Activer après avoir lu la clause de non-responsabilité concernant les règles de sécurité.

Le code de démarrage de ce codelab comprend des règles plus sécurisées. Nous les déploierons plus tard dans le codelab.

24bd1a097492eac6.png

Activer le stockage cloud

L'application Web utilise Cloud Storage pour Firebase pour stocker, télécharger et partager des images.

Vous devrez activer Cloud Storage:

  1. Dans la section Développement de la console Firebase, cliquez sur Stockage .
  2. Cliquez sur Commencer .
  3. Lisez la clause de non-responsabilité concernant les règles de sécurité de votre projet Firebase, puis cliquez sur OK .

Le code de départ comprend une règle de sécurité de base, que nous déploierons plus tard dans le codelab.

L'interface de ligne de commande (CLI) Firebase vous permet d'utiliser Firebase Hosting pour servir votre application Web localement ainsi que pour déployer votre application Web dans votre projet Firebase.

  1. Installez l'interface de ligne de commande en suivant ces instructions dans la documentation Firebase.
  2. Vérifiez que l'interface de ligne de commande a été correctement installée en exécutant la commande suivante dans un terminal:
firebase --version

Assurez-vous que votre version de l'interface de ligne de commande Firebase est v8.0.0 ou ultérieure.

  1. Autorisez la CLI Firebase en exécutant la commande suivante:
firebase login

Nous avons configuré le modèle d'application Web pour extraire la configuration de votre application pour Firebase Hosting à partir du répertoire local de votre application (le référentiel que vous avez cloné précédemment dans le codelab). Mais pour extraire la configuration, nous devons associer votre application à votre projet Firebase.

  1. Assurez-vous que votre ligne de commande accède au répertoire local de performance-monitoring-start des performance-monitoring-start votre application.
  2. Associez votre application à votre projet Firebase en exécutant la commande suivante:
firebase use --add
  1. Lorsque vous y êtes invité, sélectionnez votre ID de projet, puis attribuez un alias à votre projet Firebase.

Un alias est utile si vous avez plusieurs environnements (production, préparation, etc.). Cependant, pour ce codelab, utilisons simplement l'alias de default .

  1. Suivez les instructions restantes dans votre ligne de commande.

Il existe différentes manières d'intégrer le SDK Firebase Performance Monitoring pour le Web (reportez-vous à la documentation pour plus de détails). Dans ce codelab, nous activerons la surveillance des performances à partir des URL d'hébergement .

Ajouter une surveillance des performances et initialiser Firebase

  1. Ouvrez le fichier public/index.html , puis ajoutez la ligne suivante sous le TODO pour inclure le SDK Firebase Performance Monitoring.

index.html

<!-- TODO: Import the Firebase Performance Monitoring library here. -->
<script src="/__/firebase/7.14.2/firebase-performance.js"></script>
  1. Nous devons également initialiser le SDK Firebase avec un objet de configuration contenant des informations sur le projet Firebase et l'application Web que nous voulons utiliser. Puisque nous utilisons Firebase Hosting, vous pouvez importer un script spécial qui effectuera cette configuration pour vous. Pour ce codelab, nous avons déjà ajouté la ligne suivante pour vous au bas du fichier public/index.html , mais revérifiez qu'elle est là.

index.html

<script src="/__/firebase/init.js"></script>
  1. Dans le fichier public/scripts/main.js , ajoutez la ligne suivante sous le TODO pour initialiser la surveillance des performances.

main.js

// TODO: Initialize Firebase Performance Monitoring.
firebase.performance();

La surveillance des performances collectera désormais automatiquement les métriques de chargement de page et de demande réseau pour vous lorsque les utilisateurs utilisent votre site! Reportez-vous à la documentation pour en savoir plus sur les traces de chargement automatique des pages.

Ajouter la première bibliothèque de polyfill de retard d'entrée

Le premier délai de saisie est utile car le navigateur répondant à une interaction de l'utilisateur donne aux utilisateurs leurs premières impressions sur la réactivité de votre application.

Le premier délai d'entrée commence lorsque l'utilisateur interagit pour la première fois avec un élément de la page, comme en cliquant sur un bouton ou un lien hypertexte. Il s'arrête immédiatement après que le navigateur est capable de répondre à l'entrée, ce qui signifie que le navigateur n'est pas occupé à charger ou analyser votre contenu.

Cette bibliothèque polyfill est facultative pour l'intégration de la surveillance des performances.

Ouvrez le fichier public/index.html , puis supprimez la mise en commentaire de la ligne suivante.

index.html

<!-- TODO: Enable First Input Delay polyfill library. -->
<script type="text/javascript">!function(n,e){var t,o,i,c=[],f={passive:!0,capture:!0},r=new Date,a="pointerup",u="pointercancel";function p(n,c){t||(t=c,o=n,i=new Date,w(e),s())}function s(){o>=0&&o<i-r&&(c.forEach(function(n){n(o,t)}),c=[])}function l(t){if(t.cancelable){var o=(t.timeStamp>1e12?new Date:performance.now())-t.timeStamp;"pointerdown"==t.type?function(t,o){function i(){p(t,o),r()}function c(){r()}function r(){e(a,i,f),e(u,c,f)}n(a,i,f),n(u,c,f)}(o,t):p(o,t)}}function w(n){["click","mousedown","keydown","touchstart","pointerdown"].forEach(function(e){n(e,l,f)})}w(n),self.perfMetrics=self.perfMetrics||{},self.perfMetrics.onFirstInputDelay=function(n){c.push(n),s()}}(addEventListener,removeEventListener);</script>

À ce stade, vous avez terminé l'intégration avec Firebase Performance Monitoring dans votre code!

Dans les étapes suivantes, vous découvrirez comment ajouter des traces personnalisées à l'aide de Firebase Performance Monitoring. Si vous souhaitez uniquement collecter les traces automatiques, rendez-vous dans la section «Déployer et commencer à envoyer des images».

La surveillance des performances vous permet de créer des traces personnalisées . Une trace personnalisée est un rapport sur la durée d'un bloc d'exécution dans votre application. Vous définissez le début et la fin d'une trace personnalisée à l'aide des API fournies par le SDK.

  1. Dans le fichier public/scripts/main.js , récupérez un objet de performance, puis créez une trace personnalisée pour télécharger un message image.

main.js

// TODO: Create a custom trace to monitor image upload.
const trace = firebase.performance().trace('saveImageMessage');
  1. Pour enregistrer une trace personnalisée, vous devez spécifier le point de départ et le point d'arrêt de la trace. Vous pouvez considérer une trace comme une minuterie.

main.js

// TODO: Start the "timer" for the custom trace.
trace.start();

 ...

    // TODO: Stop the "timer" for the custom trace.
    trace.stop();

Vous avez défini avec succès une trace personnalisée! Après le déploiement de votre code, la durée de la trace personnalisée sera enregistrée si un utilisateur envoie un message image. Cela vous donnera une idée du temps qu'il faut aux utilisateurs du monde réel pour envoyer des images dans votre application de chat.

Vous pouvez en outre configurer une trace personnalisée pour enregistrer des métriques personnalisées pour les événements liés aux performances qui se produisent dans son étendue. Par exemple, vous pouvez utiliser une métrique pour déterminer si l'heure de téléchargement est affectée par la taille d'une image pour la trace personnalisée que nous avons définie à la dernière étape.

  1. Localisez la trace personnalisée de l'étape précédente (définie dans votre fichier public/scripts/main.js ).
  2. Ajoutez la ligne suivante sous le TODO pour enregistrer la taille de l'image téléchargée.

main.js

 ...

// TODO: Record image size.
trace.putMetric('imageSize', file.size);

 ...

Cette métrique permet à la surveillance des performances d'enregistrer la durée de trace personnalisée ainsi que la taille de l'image téléchargée.

En vous basant sur les étapes précédentes, vous pouvez également collecter des attributs personnalisés sur vos traces personnalisées . Les attributs personnalisés peuvent aider à segmenter les données par catégories spécifiques à votre application. Par exemple, vous pouvez collecter le type MIME du fichier image pour étudier comment le type MIME peut affecter les performances.

  1. Utilisez la trace personnalisée définie dans votre fichier public/scripts/main.js
  2. Ajoutez la ligne suivante sous le TODO pour enregistrer le type MIME de l'image téléchargée.

main.js

 ...

// TODO: Record image MIME type.
trace.putAttribute('imageType', file.type);

 ...

Cet attribut permet à la surveillance des performances de catégoriser la durée de trace personnalisée en fonction du type d'image téléchargée.

Le SDK Firebase Performance Monitoring a été conçu pour pouvoir être chargé de manière asynchrone, et pour ne pas avoir d'impact négatif sur les performances des applications Web lors du chargement de la page. Avant le chargement du SDK, l'API Firebase Performance Monitoring n'est pas disponible. Dans ce scénario, vous pouvez toujours ajouter des traces personnalisées à l'aide de l' API User Timing . Le SDK de performance Firebase récupérera les durées à partir de measure () et les consignera en tant que traces personnalisées.

Nous allons mesurer la durée de chargement des scripts de style d'application à l'aide de l'API User Timing.

  1. Dans le fichier public/index.html , ajoutez la ligne suivante pour marquer le début du chargement des scripts de style d'application.

index.html

<!-- TODO: Mark the starting of `timer` for loading App Styling script. -->
<script type="text/javascript">performance && performance.mark('loadStylingStart');</script>
  1. Ajoutez les lignes suivantes pour marquer la fin du chargement des scripts de style d'application et pour mesurer la durée entre le début et la fin.

index.html

<!-- TODO: Mark the ending of `timer` for loading App Styling script. Measure the duration from start to end. -->
<script type="text/javascript">
  performance && performance.mark('loadStylingEnd');
  performance && performance.measure('loadStyling', 'loadStylingStart', 'loadStylingEnd');
</script>

L'entrée que vous avez créée ici sera automatiquement collectée par Firebase Performance Monitoring. Vous pourrez trouver une trace personnalisée appelée loadStyling dans la console Firebase Performance ultérieurement.

Déployer sur Firebase Hosting

Après avoir ajouté Firebase Performance Monitoring à votre code, procédez comme suit pour déployer votre code sur Firebase Hosting:

  1. Assurez-vous que votre ligne de commande accède au répertoire local de performance-monitoring-start des performance-monitoring-start votre application.
  2. Déployez vos fichiers sur votre projet Firebase en exécutant la commande suivante:
firebase deploy
  1. La console doit afficher les éléments suivants:
=== Deploying to 'friendlychat-1234'...

i  deploying firestore, storage, hosting
i  storage: checking storage.rules for compilation errors...
✔  storage: rules file storage.rules compiled successfully
i  firestore: checking firestore.rules for compilation errors...
✔  firestore: rules file firestore.rules compiled successfully
i  storage: uploading rules storage.rules...
i  firestore: uploading rules firestore.rules...
i  hosting[friendlychat-1234]: beginning deploy...
i  hosting[friendlychat-1234]: found 8 files in ./public
✔  hosting[friendlychat-1234]: file upload complete
✔  storage: released rules storage.rules to firebase.storage/friendlychat-1234.appspot.com
✔  firestore: released rules firestore.rules to cloud.firestore
i  hosting[friendlychat-1234]: finalizing version...
✔  hosting[friendlychat-1234]: version finalized
i  hosting[friendlychat-1234]: releasing new version...
✔  hosting[friendlychat-1234]: release complete

✔  Deploy complete!

Project Console: https://console.firebase.google.com/project/friendlychat-1234/overview
Hosting URL: https://friendlychat-1234.firebaseapp.com
  1. Accédez à votre application Web qui est désormais entièrement hébergée à l'aide de Firebase Hosting dans deux de vos propres sous-domaines Firebase: https://<projectId>.firebaseapp.com et https://<projectId>.web.app .

Vérifiez que la surveillance des performances est activée

Ouvrez la console Firebase et accédez à l'onglet Performances . Si vous voyez un message de bienvenue indiquant "SDK détecté", cela signifie que vous avez intégré avec succès Firebase Performance Monitoring!

ac917a089e9c89d1.png

Envoyer un message image

Générez des données de performances en envoyant des images dans votre application de chat.

  1. Après vous être connecté à votre application de chat, cliquez sur le bouton de téléchargement d'image 13734cb66773e5a3.png .
  2. Sélectionnez un fichier image à l'aide du sélecteur de fichiers.
  3. Essayez d'envoyer plusieurs images (quelques exemples sont stockés dans public/images/ ) afin de pouvoir tester la distribution de métriques et d'attributs personnalisés.

Les nouveaux messages doivent s'afficher dans l'interface utilisateur de l'application avec les images sélectionnées.

Après avoir déployé votre application Web et envoyé des messages image en tant qu'utilisateur, vous pouvez consulter les données de performances dans le tableau de bord de surveillance des performances (dans la console Firebase).

Accédez à votre tableau de bord

  1. Dans la console Firebase , sélectionnez le projet Friendly Chat votre application Friendly Chat .
  2. Dans le panneau de gauche, recherchez la section Qualité , puis cliquez sur Performances .

Examiner les données sur l'appareil

Une fois que la surveillance des performances a traité les données de votre application, vous verrez des onglets en haut du tableau de bord. Assurez-vous de revenir plus tard si vous ne voyez pas encore de données ou d'onglets.

  1. Cliquez sur l'onglet Sur l'appareil .
  • Le tableau des charges de page présente les différentes mesures de performances que la surveillance des performances collecte automatiquement lors du chargement de votre page.
  • Le tableau Durations affiche toutes les traces personnalisées que vous avez définies dans le code de votre application.
  1. Cliquez sur saveImageMessage dans le tableau Durations pour consulter les métriques spécifiques de la trace.

e28758fd02d9ffac.png

  1. Cliquez sur Agréger pour examiner la distribution des tailles d'image. Vous pouvez voir la métrique que vous avez ajoutée pour mesurer la taille de l'image pour cette trace personnalisée.

c3cbcfc0c739a0a8.png

  1. Cliquez sur Au fil du temps qui se trouve à côté de Agréger à l'étape précédente. Vous pouvez également afficher la durée de la trace personnalisée. Cliquez sur Afficher plus pour examiner les données collectées plus en détail.

16983baa31e05732.png

  1. Dans la page qui s'ouvre, vous pouvez segmenter les données de durée par type d'image MIME en cliquant sur imageType . Ces données spécifiques ont été enregistrées en raison de l'attribut imageType que vous avez ajouté à votre trace personnalisée.

8e5c9f32f42a1ca1.png

Examiner les données du réseau

Une requête réseau HTTP / S est un rapport qui capture le temps de réponse et la taille de la charge utile des appels réseau.

  1. Revenez à l'écran principal du tableau de bord de suivi des performances.
  2. Cliquez sur l'onglet Réseau pour afficher une liste des entrées de demande réseau pour votre application Web.
  3. Parcourez-les pour identifier les demandes lentes et commencez à travailler sur un correctif pour améliorer les performances de votre application!

1ab598284eea6581.png

Vous avez activé le SDK Firebase pour la surveillance des performances et collecté des traces automatiques et des traces personnalisées pour mesurer les performances réelles de votre application de chat!

Ce que nous avons couvert:

  • Ajout du SDK Firebase Performance Monitoring à votre application Web.
  • Ajout de traces personnalisées à votre code.
  • Enregistrement de métriques personnalisées liées à la trace personnalisée.
  • Segmentation des données de performances à l'aide d'attributs personnalisés.
  • Comprendre comment utiliser le tableau de bord de surveillance des performances pour obtenir des informations sur les performances de votre application.

Apprendre encore plus: