Table des matières
Le contexte: une application RSS Feed
L'expérience: bascule de navigation mobile
Conditions de test
Métrique
Méthodologie
Résultats
Discussion: piles d'appels superficiels
Conclusion et recommandations
Maison interface Web tutoriel CSS RadeventListener: une histoire de performances du cadre côté client

RadeventListener: une histoire de performances du cadre côté client

Apr 03, 2025 am 10:26 AM

RadeventListener: une histoire de performance du cadre côté client

La popularité de React n'est pas sans ses détracteurs. La taille considérable du cadre (environ 120 kib a minifié) a un impact significatif sur les temps de démarrage, en particulier lorsqu'il se fier uniquement sur le rendu côté client. Même le rendu côté serveur avec hydratation côté client reste à forte exécution des performances. Alors que React excelle dans la gestion de l'État complexe, ses demandes de ressources l'emportent souvent sur les avantages des applications plus simples. Cela peut exclure efficacement les utilisateurs avec du matériel moins puissant.

Malgré mes réservations sur les frais généraux de performance de React, j'apprécie son modèle de composant et sa syntaxe JSX. Le rendu côté serveur (ou en utilisant Preact, mon alternative préférée) reste un atout précieux. Cependant, la détermination de l'utilisation appropriée côté client reste un défi. Cet article détaille mes résultats sur l'optimisation des performances de réaction pour une meilleure expérience utilisateur.

Le contexte: une application RSS Feed

Mon application RSS Feed, bylines.fyi , utilise JavaScript sur le serveur et le client. Bien que je n'aime pas intrinsèquement les cadres côté client, mon expérience met en évidence deux problèmes récurrents:

  1. Les cadres peuvent obscurcir la plate-forme Web sous-jacente, entravant une compréhension approfondie du moment où elles sont vraiment bénéfiques.
  2. Les cadres ne garantissent pas toujours des expériences d'utilisateurs optimales.

La recherche Httparchive de Tim Kadlec sur les performances du cadre Web renforce ces préoccupations, révélant les performances moins que stellaires de React. Mon objectif était de tirer parti des avantages côté serveur de React tout en atténuant ses inconvénients côté client.

L'expérience: bascule de navigation mobile

Mon application RSS avait besoin de JavaScript côté client pour une simple bascule de navigation mobile - un exemple classique de «l'état simple». Je vois souvent des composants React surutilisés pour des tâches aussi simples, conduisant à des frais généraux inutiles. Cette expérience, bien qu'apparemment triviale, sert de référence cruciale pour comprendre comment les choix de cadre évoluent. Il est important de noter que la plupart des développeurs ne compteraient pas uniquement sur React pour une fonctionnalité aussi mineure, mais les résultats illustrent les implications architecturales pour les performances d'exécution.

Conditions de test

L'expérience a comparé trois implémentations de navigation mobile sur quatre appareils:

  1. Composant React Stateful: Server rendu et hydraté du client.
  2. Composant préalable avec état: le serveur rendu et hydraté du client.
  3. Composant de préact sans état: serveur rendu, non hydraté; en utilisant des auditeurs d'événements standard.

Appareils inclus:

  1. Téléphone Android Nokia 2 (Chrome 83)
  2. Ordinateur portable ASUS X550CC (Windows 10, Chrome 83)
  3. IPhone de 1ère génération (Safari 13)
  4. IPhone SE de 2e génération (Safari 13)

Métrique

Les mesures suivantes ont été mesurées pour chaque implémentation et appareil:

  1. Temps de démarrage: y compris le chargement et l'hydratation du cadre (React / Preact), ou simplement le code d'écoute d'événements (EventListener).
  2. Temps d'hydratation: sous-ensemble du temps de démarrage (réact / préact uniquement).
  3. Mobile Nav Temps d'ouverture: Mesurer les frais généraux du cadre dans la gestion des événements.

Méthodologie

Les tests impliquaient le débogage et le profilage à distance, enregistrant le temps de processeur pour chaque métrique sur dix itérations par scénario et par appareil. Les performances du réseau n'étaient pas un facteur.

Résultats

En raison de la complexité des données, les résultats sont présentés au format tabulaire montrant les temps de processeur minimum, maximum, médian et moyen. (Des tables détaillées sont disponibles dans la feuille de calcul qui l'accompagne). Les principales conclusions comprennent:

  • Les coûts élevés de startup et d'hydratation de React: particulièrement visible sur le Nokia 2 bas de gamme.
  • Les performances améliorées de Preact: nettement plus rapidement que réagi, mais dépassant toujours les budgets de trame idéaux sur le Nokia 2.
  • Performance supérieure de l'écouteur d'événements: toujours plus rapidement que la réaction et le préact, en particulier pour les interactions simples.

Discussion: piles d'appels superficiels

Les différences de performance découlent des frais généraux de la charge et de l'hydratation du cadre. Alors que certains compromis de performance sont inévitables pour la commodité des développeurs, l'équilibre s'incline souvent trop pour l'expérience des développeurs au détriment de l'utilisateur. Les piles d'appels pour l'hydratation React et Preact mettent en évidence les demandes de traitement significatives, en particulier pour les tâches simples. L'utilisation des auditeurs d'événements natives offre une approche beaucoup plus efficace pour la gestion simple de l'État.

Conclusion et recommandations

Cette analyse n'est pas conçue comme une critique de réaction, mais plutôt comme des encouragements pour évaluer de manière critique les choix de cadre et leur impact sur les performances. Plusieurs stratégies peuvent atténuer les problèmes de performance:

  1. Refactor Composants avec état des composants apatrides dans la mesure du possible.
  2. Évitez JavaScript et l'hydratation côté client pour les composants apatrides.
  3. Utilisez des écouteurs d'événements indépendants du cadre pour des interactions simples.
  4. Hydrater paresseusement les composants à l'aide d'observateurs d'intersection ou requestIdleCallback .
  5. Considérez le préact comme une alternative plus rapide à réagir.
  6. Adaptez l'expérience utilisateur pour les appareils basse mémoire à l'aide de navigator.deviceMemory .

Prioriser les tests de performances sur une gamme d'appareils, en assurant l'inclusivité pour les utilisateurs avec des capacités matérielles variables. L'objectif devrait être une expérience Web rapide et accessible pour tout le monde.

Un merci spécial à Eric Bailey pour les commentaires éditoriaux et le personnel de CSS-Tricks pour avoir publié cet article.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Grow A Garden - Guide de mutation complet
3 Il y a quelques semaines By DDD
<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Blue Prince: Comment se rendre au sous-sol
1 Il y a quelques mois By DDD
Nordhold: Système de fusion, expliqué
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1664
14
Tutoriel PHP
1269
29
Tutoriel C#
1248
24
Comment créer un compte à rebours animé avec HTML, CSS et JavaScript Comment créer un compte à rebours animé avec HTML, CSS et JavaScript Apr 11, 2025 am 11:29 AM

Avez-vous déjà eu besoin d'un compte à rebours sur un projet? Pour quelque chose comme ça, il pourrait être naturel d'atteindre un plugin, mais c'est en fait beaucoup plus

Guide des attributs de données HTML Guide des attributs de données HTML Apr 11, 2025 am 11:50 AM

Tout ce que vous avez toujours voulu savoir sur les attributs de données dans HTML, CSS et JavaScript.

Pendant que vous n'étiez pas à la recherche, les gradients CSS se sont améliorés Pendant que vous n'étiez pas à la recherche, les gradients CSS se sont améliorés Apr 11, 2025 am 09:16 AM

Une chose qui a attiré mon œil sur la liste des fonctionnalités pour le polyfill à gradient conique () de Lea.

Une preuve de concept pour rendre Sass plus rapidement Une preuve de concept pour rendre Sass plus rapidement Apr 16, 2025 am 10:38 AM

Au début d'un nouveau projet, la compilation SASS se produit en un clin d'œil. Cela se sent bien, surtout quand il est associé à BrowSersync, qui recharge

Une comparaison des fournisseurs de formulaires statiques Une comparaison des fournisseurs de formulaires statiques Apr 16, 2025 am 11:20 AM

Essayons de savoir un terme ici: "fournisseur de formulaire statique". Vous apportez votre HTML

Comment construire des composants Vue dans un thème WordPress Comment construire des composants Vue dans un thème WordPress Apr 11, 2025 am 11:03 AM

La directive en ligne en ligne nous permet de construire des composants Vue riches en tant qu'amélioration progressive par rapport au balisage WordPress existant.

PHP est A-OK pour les modèles PHP est A-OK pour les modèles Apr 11, 2025 am 11:04 AM

Les modèles PHP obtiennent souvent un mauvais rap pour faciliter le code inférieur - mais cela ne doit pas être le cas. Voyons comment les projets PHP peuvent appliquer un base

Les trois types de code Les trois types de code Apr 11, 2025 pm 12:02 PM

Chaque fois que je commence un nouveau projet, j'organise le code que je regarde en trois types ou catégories si vous le souhaitez. Et je pense que ces types peuvent être appliqués à

See all articles