Chargement de page rapide sur les téléphones bon marché les plus simples

Ces tĂ©lĂ©phones auxquels il est fait rĂ©fĂ©rence dans le titre, en anglais, sont appelĂ©s "tĂ©lĂ©phone de fonction". Ils diffĂšrent par des capacitĂ©s extrĂȘmement modestes. De plus, ils sont trĂšs abordables, car ils coĂ»tent environ 20-25 $. Ils peuvent ĂȘtre comparĂ©s aux versions allĂ©gĂ©es des smartphones modernes. Ces tĂ©lĂ©phones permettent Ă  des centaines de millions de personnes des pays en dĂ©veloppement d'utiliser les ressources Web.


Jio Phone

Si le site est basé sur des technologies visant à assurer une vitesse élevée de son travail, tout le monde en bénéficiera - à la fois les propriétaires de téléphones simples et bon marché et ceux qui regardent des pages Web à partir de nouveaux smartphones puissants.

Aperçu de la situation


Les appareils dont nous parlons, comme le tĂ©lĂ©phone, sont peu coĂ»teux. Par consĂ©quent, ils ont des capacitĂ©s matĂ©rielles plutĂŽt faibles. Ainsi, ils utilisent des processeurs lents (par exemple, le processeur d'un tĂ©lĂ©phone bon marchĂ© peut ĂȘtre 6 fois plus lent que le processeur d'un smartphone haut de gamme). Ils installent trĂšs peu de RAM (cela peut ĂȘtre de l'ordre de 256 Ă  512 Mo, gĂ©nĂ©ralement moins de 4 Go). La mĂȘme chose s'applique Ă  la quantitĂ© de mĂ©moire interne pour stocker des donnĂ©es, qui ne dĂ©passe gĂ©nĂ©ralement pas 4 Go. Ces tĂ©lĂ©phones n'ont souvent pas d'Ă©cran tactile. Au lieu de cela, ils ont des claviers et des joysticks simples utilisĂ©s Ă  des fins de navigation. Le cdpv montre Ă  quoi pourrait ressembler un tĂ©lĂ©phone similaire.

Ces téléphones ne peuvent pas exécuter le code JavaScript aussi rapidement que les smartphones avancés. Il leur est difficile d'afficher des sites contenant de grandes quantités de données multimédias. Par conséquent, pour préparer des pages qui fonctionneront bien sur de tels téléphones, vous devez aborder de maniÚre responsable le problÚme du remplissage de ces pages.


Top 10 des smartphones modernes: performances du processeur (premier semestre 2019)

Ci-dessus sont les résultats d'une étude de performance des 10 smartphones les plus vendus en 2019. Cette étude a été menée en utilisant le benchmark Geekbench 4. Ici, dans la partie supérieure, vous pouvez voir les résultats des tests du populaire téléphone bon marché - Nokia 3110.

Le contenu JavaScript des pages est exĂ©cutĂ© principalement en mode simple cƓur (ici, il convient de rappeler que le code JS, de par sa nature, est beaucoup plus «simple thread» du reste du contenu Web), par consĂ©quent, les performances JavaScript sont liĂ©es aux capacitĂ©s du processeur. Cela suggĂšre que lorsque vous pensez Ă  des projets Web pour les pays en dĂ©veloppement, vous devez vous souvenir des caractĂ©ristiques des appareils qui y sont utilisĂ©s.

Ce matériel vise à résoudre le problÚme du développement de sites pour les appareils lents. L'application des techniques décrites dans ce document vous permet de créer des sites qui conviennent à tous, quelle que soit la performance de leur téléphone.

Informations générales


Peut-ĂȘtre vous en souvenez-vous, peut-ĂȘtre pas, mais les tĂ©lĂ©phones que nous appelons les tĂ©lĂ©phones portables Ă©taient populaires jusqu'au milieu des annĂ©es 2000, avant l'avĂšnement et l'utilisation gĂ©nĂ©ralisĂ©e des smartphones. Il s'agissait d'appareils compacts avec un clavier au lieu d'un Ă©cran tactile. Ils ne possĂ©daient que des fonctionnalitĂ©s de base: passer des appels, envoyer des SMS, naviguer sur des sites Web, se concentrer sur le contenu textuel des pages. Depuis l'avĂšnement des smartphones, le nombre de tĂ©lĂ©phones portables simples dans les pays dĂ©veloppĂ©s a diminuĂ©.

Dans les pays en développement, tout le monde ne peut pas se permettre un smartphone et un tarif 4G illimité. Ce marché a été pris en charge par des appareils appelés téléphones intelligents. Ils combinent le matériel et le prix d'un simple téléphone mobile avec certaines fonctionnalités spécifiques aux smartphones.


Téléphones bon marché

Le marché des téléphones bon marché avec des capacités de smartphone a considérablement augmenté depuis 2017. Il est prévu qu'en 2019 environ 400 millions de ces appareils seront vendus dans le monde.

La croissance du marché des combinés à bas prix a été facilitée par le fait que Nokia a relancé ses anciens modÚles populaires, tels que les Nokia 3110 et 8110 ( voici un guide de débogage des pages Web sur le Nokia 8110 avec KaiOS). En Inde, les téléphones Reliance Jio offrent à leurs utilisateurs un accÚs mobile bon marché mais moderne aux ressources Web. Jio a contribué au développement de KaiOS , un systÚme d'exploitation basé sur Linux conçu pour les téléphones simples et abordables.

Le marché croissant des téléphones simples a créé un besoin de sites qui peuvent fonctionner efficacement sur de tels appareils. Pour développer de tels sites, vous devez considérer certaines restrictions.


Divers projets conçus pour les téléphones à bas prix

L'image précédente montre les écrans des projets Google Images Lite et Facebook mBasic. Ces projets se chargent rapidement sur des téléphones simples; ils s'appuient au minimum sur les capacités de script client. Une autre capture d'écran est le jeu Proxx , qui, bien que fortement dépendant des scripts, utilise une séparation de code agressive pour accélérer le chargement.

Limitations des téléphones bon marché


Les utilisateurs de téléphones bas de gamme dans les pays en développement sont limités par trois facteurs:

  • Un petit nombre d'appareils de haute qualitĂ© bon marchĂ©.
  • InaccessibilitĂ© des rĂ©seaux de communication Ă  haut dĂ©bit.
  • CoĂ»t Ă©levĂ© du transfert de donnĂ©es.

Ces limites doivent ĂȘtre rappelĂ©es pour ceux qui veulent se brancher sur la perception du dĂ©veloppement Web Ă  travers le «prisme du tĂ©lĂ©phone de fonction». Si nous parlons plus en dĂ©tail des limites de ces tĂ©lĂ©phones et de l'environnement dans lequel ils sont utilisĂ©s, nous obtenons ce qui suit:

  1. MatĂ©riel informatique Les tĂ©lĂ©phones simples ont gĂ©nĂ©ralement un processeur simple ou double cƓur plus lent (quelque chose comme 1,1 GHz) et moins de 512 Mo de RAM. Afin de comprendre comment cela limite les capacitĂ©s des appareils, comparez cela avec un processeur multicƓur et un iPhone XS de 4 Go de RAM.
  2. Transfert de donnĂ©es. Les forfaits mobiles sont de moins en moins chers, mais dans les rĂ©gions oĂč les tĂ©lĂ©phones Ă  bas prix peuvent ĂȘtre distribuĂ©s, les forfaits sont encore trĂšs limitĂ©s. Cela signifie que lors du dĂ©veloppement de pages conçues pour les tĂ©lĂ©phones multifonction, vous devez vous efforcer de rĂ©duire autant que possible la quantitĂ© de donnĂ©es que ces pages contiennent. Cela permettra aux sites, d'une part, de se charger plus rapidement et, d'autre part, de rĂ©duire le coĂ»t de la visite de ces sites pour les utilisateurs.
  3. Taille d'écran limitée. La taille d'écran d'un téléphone bon marché est généralement beaucoup plus petite que la taille d'écran d'un smartphone. Nous parlons d'un écran avec une diagonale d'environ 2,4 pouces. Ces écrans vous permettent d'afficher uniquement un nombre trÚs limité d'éléments. Cela signifie que le développeur du site doit s'efforcer de télécharger exactement ce qui sera affiché à l'écran dÚs que possible.
  4. L'absence d'Ă©cran tactile. Si l'appareil n'est pas Ă©quipĂ© d'un Ă©cran tactile, cela signifie que tout ce avec quoi l'utilisateur peut interagir doit ĂȘtre facilement accessible lorsqu'il travaille avec la page Ă  l'aide du clavier. Vous ne devez pas afficher sur la page trop d'Ă©lĂ©ments avec lesquels vous pouvez travailler.
  5. Claviers Sur les téléphones à bas prix, des claviers matériels sont utilisés, qui sont complÚtement différents des claviers QWERTY à l'écran familiers aux propriétaires de smartphones. Le clavier matériel comprend environ 15 touches, plusieurs touches étant utilisées pour saisir certains caractÚres. En conséquence, il s'avÚre qu'en termes d'UX, il vaut la peine de s'efforcer de minimiser le besoin de saisie de texte.

Il convient de noter que mĂȘme au Japon, des plans tarifaires limitĂ©s affectent la facilitĂ© d'utilisation des utilisateurs avec des ressources Web.


Temps de chargement des pages pour les appareils 4G au Japon

Ci-dessus, une image de ce tweet, qui dit qu'au Japon Ă  la fin du mois, les pages se chargent plus lentement en raison des restrictions du plan tarifaire.

Lignes directrices de conception de site Web


Les directives suivantes peuvent vous aider à concevoir des sites qui fonctionneront rapidement sur des téléphones simples et peu coûteux. En général, on peut noter qu'il n'est pas recommandé à l'utilisateur d'attendre le téléchargement de quelque chose qu'il n'a pas explicitement demandé. Dans la mesure du possible, vous devez vous efforcer de réduire le temps nécessaire au chargement et à l'exécution du code JavaScript.

▍ DĂ©finissez des limites sur la quantitĂ© de donnĂ©es transfĂ©rĂ©es lors du premier chargement du site


Sur le chemin du serveur au client, chaque octet de votre page passe par de nombreux goulots d'Ă©tranglement. Ce sont des rĂ©seaux lents et peu fiables, ce sont des processeurs lents. Le seul moyen garanti d'augmenter les performances des pages est de planifier strictement leur volume et de rĂ©aliser (et mĂȘme de saturer) les plans.

Les objectifs de performance des pages sont fixés par les contraintes que l'équipe de développement s'efforce de fournir à son projet des performances décentes. Ce sont les limites des métriques au-delà desquelles il a été décidé de ne pas aller au-delà. La définition de telles contraintes sur des indicateurs mesurables et la définition de contraintes faites avant le début des travaux aident l'équipe à s'assurer que les performances du projet se situent dans le cadre donné lorsque de nouvelles fonctionnalités y sont ajoutées.

Des exemples de mesures de ressources pouvant ĂȘtre limitĂ©es incluent la taille du bundle JavaScript, la taille de l'image en octets et le nombre de requĂȘtes HTTP. Des limitations sur les mesures qui affectent la façon dont les utilisateurs perçoivent les pages peuvent ĂȘtre dĂ©finies pour des mesures telles que la premiĂšre peinture avec contenu , la plus grande peinture avec contenu ou le premier dĂ©lai d'entrĂ©e . Ils vous permettent d'Ă©valuer la vitesse Ă  laquelle l'utilisateur voit la page et la rapiditĂ© avec laquelle il peut interagir avec elle. Vous pouvez dĂ©finir des valeurs de seuil pour ces indicateurs, en fonction des caractĂ©ristiques du public cible du site.

Vous pouvez dĂ©velopper un systĂšme de restrictions concernant votre propre code d'application, ainsi que concernant les scripts tiers et d'autres choses comme ça. Les contraintes peuvent ĂȘtre vĂ©rifiĂ©es lors de la construction du projet , Ă  l'aide de Lighthouse (LightWallet), dans un systĂšme d' intĂ©gration continue .

▍ Utilisez le modùle PRPL


PRPL est un modÚle recommandé par l'équipe de développement Chrome pour l'échelonnement des téléchargements de code. Il est conçu pour garantir que les applications l'utilisant deviennent interactives aussi rapidement que possible sur des appareils à faible coût et des réseaux lents. Le modÚle PRPL encourage le préchargement de la quantité minimale de code JS nécessaire pour faire fonctionner la page. Les ressources sont ensuite chargées à l'aide de techniques de chargement paresseux. Si nécessaire, vous pouvez utiliser le service worker pour pré-mettre en cache les ressources JavaScript nécessaires aux interactions futures avec le site.

Le modĂšle PRPL-50 dĂ©finit une limite sur la quantitĂ© de ressources initialement chargĂ©es Ă©gale Ă  50 Ko. Étant donnĂ© que les tĂ©lĂ©phones Ă  faible coĂ»t disposent de ressources matĂ©rielles trĂšs modestes, vous devez dĂ©finir des restrictions encore plus strictes. Ici, je vous conseille de considĂ©rer le modĂšle PRPL-30. 30 correspond Ă  30 Ko de ressources source, c'est la taille du paquet compressĂ© et minifiĂ© chargĂ© lors du premier chargement de page.


Exemple d'allocation d'espace dans un bundle JS de 30 Ko. Cela inclut la logique d'application, le code d'infrastructure, les utilitaires d'assistance et les dépendances tierces

Avec cette approche, le premier octet de documents de site provenant d'un bon serveur de mise en cache de bordure, une fois la procédure de connexion SSL terminée, arrivera sur l'appareil en environ 2 secondes. Cela nous donne 3 secondes pour télécharger les matériaux de l'itinéraire d'origine, les afficher et préparer la page pour l'interaction avec l'utilisateur. Pour les projets basés sur JavaScript, cela signifie que la taille totale du bundle réduit et compressé chargé sur la sortie de la premiÚre page ne doit pas dépasser 30 Ko.


L'utilisation du modÚle PRPL-30 permet au développeur de mettre la page en mode interactif sur un téléphone bon marché en environ 5 secondes

Cela surprendra peut-ĂȘtre quelqu'un: «De quoi parle-t-on? Taille du paquet d'origine de 30 Ko? C’est Ă©trange. AprĂšs tout, je ne rentrerai mĂȘme pas React et le code d'application dans ce volume! »Il convient de noter que lors du dĂ©veloppement de sites conçus pour des appareils vraiment faibles, le crĂ©ateur du projet, pour la commoditĂ© des utilisateurs, devra faire des compromis difficiles. Par exemple, React peut ĂȘtre utilisĂ© pour les sites de tĂ©lĂ©phones par fonctionnalitĂ© soit si l'utilisation de React est limitĂ©e au rendu du serveur (1), ce qui semble assez raisonnable, ou si (2) les fragments de code contenant la logique d'application sont trĂšs, trĂšs petits et ceci si dans leur prĂ©paration appliquera les rĂšgles les plus sĂ©vĂšres de chargement paresseux. Il existe une troisiĂšme option - choisissez un analogue React lĂ©ger comme Preact (3). Nous parlerons plus en dĂ©tail de ces compromis ci-dessous.

Proxx est un exemple d'application créée en utilisant la limite de 30 Ko. L'ensemble de données du projet initial a une taille de 25 Ko, il diffÚre par l'indicateur TTI (Time To Interactive), qui est inférieur à 5 secondes. Voici une calculatrice que vous pouvez utiliser pour trouver des cibles pour des projets Web et pour sélectionner vos propres limites.

La taille recommandée pour les itinéraires chargés en mode paresseux ne dépasse pas 35 Ko. Mais les "fragments", dont la taille est de l'ordre de 30 à 35 Kb, sont également assez grands pour parler de leur traitement parallÚle en utilisant les capacités du V8 pour le streaming de scripts.

▍ Enregistrer les ressources JavaScript


Si nous parlons de l'enregistrement des ressources JavaScript en un mot, il s'avĂšre que vous pouvez utiliser le rendu statique ou le rendu serveur avec une implication minimale des scripts client. S'il est totalement impossible de se passer du rendu client ou hybride, seuls les scripts nĂ©cessaires Ă  un itinĂ©raire particulier doivent ĂȘtre envoyĂ©s au client, et il est prĂ©fĂ©rable de le faire pour le moins de sessions de transfert de donnĂ©es possible. Ici, vous pouvez envisager des techniques telles que la prĂ©paration progressive de la page pour le travail dans le navigateur .


Rendu statique

JavaScript est le principal goulot d'étranglement des téléphones simples


Lorsque vous dĂ©veloppez des projets interactifs pour des tĂ©lĂ©phones bon marchĂ©, sachez que JavaScript est gĂ©nĂ©ralement la principale pierre d'achoppement des performances de pages Ă©levĂ©es. Ceci est important, car la rapiditĂ© avec laquelle l'utilisateur peut les utiliser dĂ©pend de la façon dont il est dĂ©cidĂ© de rendre les pages . MĂȘme s'il travaille avec eux Ă  l'aide d'un joystick de tĂ©lĂ©phone. Si vous dĂ©cidez d'utiliser le rendu cĂŽtĂ© serveur ou statique, essayez de faire en sorte que la quantitĂ© de code JS nĂ©cessaire pour organiser le travail interactif de la page soit aussi petite que possible.

EntrĂ©e URL; chargement des rĂ©sultats de rendu du serveur; charger le code JavaScript nĂ©cessaire pour mettre la page en mode interactif; page prĂȘte pour l'interaction utilisateur

Le prix de JavaScript se compose de deux indicateurs: le temps de chargement et le temps d'exécution du code. Un réseau lent (par exemple, une connexion 3G stable) peut augmenter le temps de démarrage JS. Un processeur lent augmentera le temps requis pour exécuter le script. La figure suivante montre le temps nécessaire à divers appareils pour traiter le code JavaScript de la ressource reddit.com populaire. Il est facile de voir qu'un appareil lent (Alcatel 1X 5059D) prend 6 fois plus de temps qu'un appareil rapide (Pixel 3).


Le temps nécessaire à différents appareils pour traiter le code JS d'un site populaire

Si le rendu de la page ou le processus de mise en mode interactif dépend fortement de JavaScript, cela peut conduire au fait que l'utilisateur d'un téléphone bon marché devra attendre 30 à 60 secondes juste pour avoir l'opportunité de travailler avec l'interface utilisateur. Par conséquent, afin de minimiser le temps nécessaire au chargement et au traitement de JavaScript, le développeur doit utiliser les scripts avec parcimonie et télécharger le code uniquement pour les routes et les composants dont l'utilisateur peut avoir besoin. Vous devez le faire lorsque vous avez besoin du code approprié.

Efforcez-vous de minimiser la quantité de code nécessaire pour rendre la page interactive


Voici quelques conseils pour vous aider à minimiser la quantité de code dont vous avez besoin pour fournir les fonctionnalités interactives de vos pages:

  1. Utilisez des mĂ©canismes de chargement paresseux aussi largement que possible. Nous parlons d'itinĂ©raires, de composants, de ressources qui sont en dehors de la zone visible de l'Ă©cran, de ce qui ne peut pas ĂȘtre qualifiĂ© d'extrĂȘmement important pour assurer la santĂ© de la page.
  2. Utilisez des mécanismes de fractionnement de code pour diviser le code JavaScript en parties et pour télécharger uniquement ce dont l'utilisateur a besoin lors de l'utilisation de la route initiale. Cela entraßnera un chargement de page plus rapide en réduisant la quantité de scripts chargés et traités.
  3. Supprimez le code inutilisĂ© des bundles JavaScript afin de rĂ©duire au maximum leur taille. Pour ce faire, vous devrez analyser le bundle et identifier les bibliothĂšques qui ne sont pas du tout utilisĂ©es, et celles qui peuvent ĂȘtre remplacĂ©es par quelque chose de plus compact, adaptĂ© aux besoins de votre projet. Les bibliothĂšques qui ne sont pas utilisĂ©es lors du premier chargement de la page peuvent ĂȘtre chargĂ©es en mode paresseux.
  4. Pensez à utiliser des mécanismes de chargement de code différentiel . Cela vous permettra de donner du code JavaScript moderne aux navigateurs modernes, de vous débarrasser de l'utilisation excessive du code transpilé et d'éviter les polyfills. La réduction du code pour les navigateurs plus anciens peut améliorer les performances du code dans les navigateurs modernes.
  5. Si le code JS est absolument nĂ©cessaire au rendu de la page et Ă  l'affichage de son interface en mode interactif, organisez un chargement prĂ©alable des scripts nĂ©cessaires. L'attribut correspondant, comme indiquĂ© ci-dessous, indique au navigateur que le script est important et qu'il doit ĂȘtre tĂ©lĂ©chargĂ© le plus rapidement possible.

<link rel="preload" as="script" href="critical.js"> 

Choose Choisissez soigneusement la pile de technologies utilisées



Framework et utilitaires

Alors que l'utilisation de bibliothĂšques tierces peut accĂ©lĂ©rer le dĂ©veloppement et simplifier la rĂ©solution de problĂšmes complexes, les bibliothĂšques peuvent avoir une taille considĂ©rable. Ils doivent ĂȘtre utilisĂ©s avec prudence lors du dĂ©veloppement de projets conçus pour les appareils faibles. Voici quelques directives pour l'utilisation des dĂ©pendances externes:

  1. Les tĂ©lĂ©phones bon marchĂ© sont trĂšs limitĂ©s en ressources. Par consĂ©quent, si possible, Ă©vitez d'utiliser des frameworks JS ou limitez leur utilisation. Le but de cette astuce est de laisser autant de place que possible Ă  la logique d'application. Dans une situation oĂč un dĂ©veloppeur cherche Ă  limiter l'utilisation de JavaScript afin de rĂ©duire la taille de la page et d'augmenter ses performances, les frameworks JS peuvent surcharger la page de maniĂšre excessive. Si le projet est basĂ© sur React, envisagez de limiter l'utilisation de cette bibliothĂšque au rendu du serveur, ou envisagez de passer Ă  Preact et d'utiliser preact-compat pendant la gĂ©nĂ©ration pour rĂ©duire la taille du bundle d'environ 30 Ko. Pour crĂ©er des faisceaux lĂ©gers, il est judicieux d'examiner des technologies telles que Svelte , lit-html et JavaScript simple.
  2. Essayez de vous assurer que les dépendances tierces prennent le moins d'espace possible. Cela garantira que les tailles des liasses utilisées lors du chargement initial de la page correspondent aux limites spécifiées. Pour analyser la contribution à la taille des bundles réalisés par des bibliothÚques tierces, vous pouvez utiliser bundlephobia.com . Analysez de maniÚre critique la composition de vos bundles pour déterminer si leur espace est utilisé efficacement. Par exemple, au lieu de la bibliothÚque Moment.js, qui contient, sous une forme standard, de grandes quantités de données liées aux normes nationales, vous pouvez utiliser date-fns ou luxon .
  3. Soyez extrĂȘmement prudent lorsque vous utilisez Redux et les rĂ©fĂ©rentiels intĂ©grĂ©s Redux utilisĂ©s pour gĂ©rer l'intĂ©gritĂ© des applications. Les donnĂ©es du rĂ©fĂ©rentiel Redux sont souvent intĂ©grĂ©es au HTML afin de pouvoir ĂȘtre utilisĂ©es pour rendre les pages opĂ©rationnelles. Cela peut facilement entraĂźner une augmentation excessive de la taille des donnĂ©es envoyĂ©es par le serveur en rĂ©ponse aux demandes des clients.

▍Adaptez le matĂ©riel du site afin de ne pas charger de ressources volumineuses sur des connexions lentes


ImmĂ©diatement, je veux vous conseiller de jeter un coup d'Ɠil Ă  ce matĂ©riel sur l'adaptation des ressources basĂ©es sur des appareils faibles.


Chargement adaptatif des ressources en fonction de la vitesse de connexion au réseau

Le chargement adaptatif des ressources est une technique d '«adaptation» des documents envoyés à l'utilisateur sur la base d'informations sur le type de connexion efficace (ECT) disponibles pour le navigateur via l'API Network Information . Voici à quoi ressemble cette API:

 console.log(navigator.connection.effectiveType); // 3G 

Le chargement adaptatif permet aux sites de garantir que les utilisateurs travaillant sur des connexions lentes peuvent obtenir presque la mĂȘme expĂ©rience d'interaction avec les ressources que les utilisateurs qui ont accĂšs Ă  des rĂ©seaux plus rapides. Peut-ĂȘtre que sur la version "lente" du site, tout ne sera pas aussi beau que sur la version "rapide", mais c'est un paiement acceptable pour de bonnes performances.

Veuillez noter que mĂȘme sur une connexion 4G «rapide», les utilisateurs peuvent rencontrer de faibles vitesses de transfert de donnĂ©es. Peut-ĂȘtre avez-vous rencontrĂ© quelque chose comme ça, en utilisant Internet WiFi dans un restaurant ou lors d'une confĂ©rence.

Prenons un exemple spĂ©cifique d'utilisation du chargement de matĂ©riau adaptatif. Il s'agira du composant qui reprĂ©sente un certain produit sur le site. Un utilisateur travaillant sur une connexion lente verra une version compressĂ©e de l'image du produit. Et quiconque va Ă  Internet Ă  grande vitesse verra une image de haute qualitĂ© et pourra en outre utiliser des fonctionnalitĂ©s supplĂ©mentaires qui nĂ©cessitent beaucoup de code JavaScript pour ĂȘtre implĂ©mentĂ©es. Par exemple - c'est la possibilitĂ© d'augmenter l'image du produit, ou de visualiser, dans le «carrousel», diverses photos du produit.

Dans le cas des tĂ©lĂ©phones bon marchĂ©, un rĂ©seau lent n'est pas nĂ©cessairement le principal obstacle Ă  leur envoyer des ressources en masse. Les impressions de l'utilisateur de travailler avec le site sont les plus susceptibles d'ĂȘtre affectĂ©es par le processeur lent et la faible capacitĂ© de mĂ©moire - mĂȘme si l'appareil est connectĂ© Ă  un rĂ©seau 4G assez rapide. Bien que les dĂ©veloppeurs Web n'aient pas encore accĂšs Ă  des informations dĂ©taillĂ©es sur le processeur, les conseils des clients fournissent des informations approximatives sur la mĂ©moire de l'appareil, sur la largeur et la densitĂ© de pixels de l'Ă©cran, sur le rĂ©seau et sur d'autres choses. Ces informations peuvent ĂȘtre utilisĂ©es pour dĂ©velopper une stratĂ©gie plus prĂ©cise pour fournir des donnĂ©es optimisĂ©es au client.

▍ Respectez le plan tarifaire de l'utilisateur, compte tenu du contenu de l'en-tĂȘte Save-Data


Le navigateur Chrome pour Android dispose d'une option spĂ©ciale qui inclut l'enregistrement des donnĂ©es. Il permet aux utilisateurs qui souhaitent enregistrer du trafic de travailler dans un mode dans lequel le navigateur optimise automatiquement les ressources, en essayant d'accĂ©lĂ©rer le chargement des pages. L'optimisation comprend une compression d'images plus que d'habitude, retardant le chargement des ressources qui ne sont pas critiques, gĂ©nĂ©rant sur le serveur des images pour prĂ©visualiser les pages. Voici le matĂ©riel oĂč vous pouvez trouver des dĂ©tails Ă  ce sujet.

Lorsque les utilisateurs activent le mode d'enregistrement des donnĂ©es dans les navigateurs qui prennent en charge ce mode, les navigateurs attachent l'en - tĂȘte Save-Data aux requĂȘtes HTTP et HTTPS. Le dĂ©veloppeur du projet web peut, Ă  l'aide de JavaScript, vĂ©rifier si la demande a un tel titre et, si c'est le cas, peut donner Ă  l'utilisateur une version optimisĂ©e des matĂ©riaux du site. En consĂ©quence, il s'avĂšre que l'utilisateur abandonne intentionnellement les opportunitĂ©s "dures", et le dĂ©veloppeur rĂ©pond simplement Ă  son dĂ©sir. Pour vĂ©rifier l'en-tĂȘte Save-Data dans la demande, vous pouvez utiliser quelque chose comme ce code:

 if ("connection" in navigator) {  if (navigator.connection.saveData === true) {    //  ,    .  } } 

Voici à quoi ressemble la version allégée de la page.


Version allégée de la page préparée par Google

Veuillez noter que bien qu'un simple téléphone bon marché puisse prendre en charge Chrome, cela ne garantit pas la disponibilité du mode d'enregistrement des données dans le navigateur. Il est préférable de considérer cette fonctionnalité comme quelque chose comme la fonctionnalité optionnelle optionnelle de certains navigateurs.

▍ Tirez la logique gourmande en ressources et les mĂ©canismes de gestion de l'Ă©tat des applications dans les travailleurs Web


Voici du bon matériel pour trouver des conseils sur l'accélération du chargement des applications Web sur les téléphones faibles.

Le thread principal du navigateur, en plus d'exécuter JavaScript, est occupé par d'autres choses importantes. Il s'agit de la formation de la mise en page, de l'affichage des pixels à l'écran, assurant l'interaction de l'utilisateur avec la page. Des opérations JavaScript longues et complexes peuvent bloquer le thread principal, ce qui signifie interférer avec la page.

Les travailleurs Web vous permettent d'exĂ©cuter du code JavaScript en arriĂšre-plan et de ne pas bloquer le thread principal. Ils doivent ĂȘtre utilisĂ©s afin de supprimer la charge crĂ©Ă©e par les opĂ©rations JavaScript "lourdes" du thread principal. Parmi eux, la logique complexe des applications Web et leur gestion des Ă©tats. Le thread principal et le thread de travail Ă©changent des informations Ă  l'aide de la fonction postMessage () et du gestionnaire d' Ă©vĂ©nements onmessage . La fonction postMessage() permet Ă  l'expĂ©diteur d'envoyer une valeur au destinataire, qui pourrait ĂȘtre, par exemple, un objet JavaScript. Il existe des bibliothĂšques comme Comlink qui facilitent l'utilisation des travailleurs Web.

Voici le matĂ©riel oĂč le travail du projet Proxx est Ă©tudiĂ© avec l'utilisation des flux de travailleurs et sans eux. Au cours de l'Ă©tude, il a Ă©tĂ© constatĂ© que sans l'utilisation de travailleurs, une application qui effectue une certaine opĂ©ration «se fige» sur le tĂ©lĂ©phone Nokia 2 (1 Go de mĂ©moire, un processeur quadricƓur avec une frĂ©quence de 1,3 GHz) pendant 6,6 secondes. Dans les mĂȘmes conditions, mais avec l'utilisation d'un travailleur, le temps de rĂ©action du systĂšme n'est que de 48 ms. Par consĂ©quent, si vous avez du code qui nĂ©cessite des ressources processeur importantes, vous devez vous demander si le portage vers un travailleur Web amĂ©liorera la situation.

▍ Optimiser les images


Les images contiennent souvent une trĂšs grande quantitĂ© de donnĂ©es liĂ©es aux pages Web. Dans le mĂȘme temps, les images doivent non seulement ĂȘtre tĂ©lĂ©chargĂ©es. Ils doivent encore ĂȘtre dĂ©codĂ©s, prĂ©parĂ©s pour la sortie, ce qui peut fortement charger un appareil de faible puissance. Par consĂ©quent, pour le dĂ©veloppement de sites conçus pour les tĂ©lĂ©phones faibles, il est important de veiller Ă  ce que les images utilisĂ©es sur ces sites soient de taille appropriĂ©e et soient correctement compressĂ©es. Voici quelques suggestions d'optimisation d'image:

  1. Compressez les images à l' aide d'outils comme Imagemin. Ils vous permettent d'obtenir une réduction de la taille de l'image sans diminution notable de leur qualité.
  2. Remplacez les GIF animés par des fichiers vidéo qui se chargent beaucoup plus rapidement. Mais, en ce qui concerne la vidéo, il convient de se demander si des supports lourds sont nécessaires sur un site conçu pour un simple téléphone bon marché.
  3. Utilisez autant que possible les mécanismes de chargement paresseux des images. Comme ces mécanismes sont basés sur JavaScript, essayez de vous assurer que leur implémentation logicielle n'est pas trop «lourde». Vous trouverez ici le nouvel attribut de chargement standard utile.
  4. Envoyez des images rĂ©actives de la bonne taille au client. Cela peut ĂȘtre fait en crĂ©ant de nombreuses versions d'images et en donnant au client celles qui conviennent le mieux Ă  son Ă©cran.
  5. Utilisez des images adaptées à l'écran. La sortie de petites images suffisamment compressées pour un utilisateur travaillant sur un téléphone faible entraßnera le décodage de ces images.

▍ Donnez au client des ressources qui correspondent Ă  la taille d'Ă©cran de l'appareil


De nombreux appareils modernes qui peuvent ĂȘtre classĂ©s comme «tĂ©lĂ©phones intelligents» ont des Ă©crans QVGA avec une rĂ©solution de 320x240 pixels, respectivement, horizontalement et verticalement. Si vous devez connaĂźtre la taille d'Ă©cran de l'appareil lors du chargement de la page (par exemple, pour utiliser certaines optimisations), vous pouvez utiliser quelque chose comme ce fragment de code:

 const isFeaturePhone = Math.min(screen.width, screen.height) <= 240; 

Une approche similaire est utilisée dans le projet Proxx.

▍Testez des sites sur de vrais appareils ou dans l'Ă©mulateur


Si vous dĂ©veloppez des sites conçus pour de simples tĂ©lĂ©phones bon marchĂ©, il est recommandĂ© de les tester sur ces tĂ©lĂ©phones. Ils sont peu coĂ»teux. Par exemple, un tweet qui dit que les dĂ©veloppeurs qui vivent aux États-Unis et qui souhaitent tester leurs sites sur des appareils KaiOS sont invitĂ©s Ă  se rendre sur BestBuy et Ă  obtenir un tĂ©lĂ©phone pour 15 $.


Téléphone bon marché pour tester des sites sur KaiOS

Si vous souhaitez émuler un téléphone similaire (par exemple, quelque chose comme un téléphone Jio fonctionnant sur KaiOS), vous pouvez utiliser les outils de développement Chrome pour cela:

  • Ouvrez les outils de dĂ©veloppement Chrome.
  • Ouvrez la barre d'outils Device .
  • Dans la barre d'outils de l' Device , ouvrez le menu de l'appareil et sĂ©lectionnez Edit . Dans la fenĂȘtre qui apparaĂźt, cliquez sur le bouton Add custom device .
  • Nommez le nouvel appareil KaiOS (ou ce que vous voulez).
  • RĂ©glez la taille de l'Ă©cran sur 240x320 .
  • Dans le champ User agent string , entrez ce qui suit: Mozilla/5.0 (Mobile; LYF/F90M/LYF-F90M-000-02-23-181217; Android; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.5 YouTube/1.66.51.J .
  • Enregistrez l'appareil en cliquant sur le bouton Add .
  • Si nĂ©cessaire, activez le ralentissement du processeur, mais gardez Ă  l'esprit qu'avec l'aide d'un Ă©mulateur, vous ne pourrez pas vĂ©rifier un site aussi bien que cela peut ĂȘtre fait en utilisant un vĂ©ritable appareil.


Configurer un nouvel appareil dans Chrome Developer Tools

Résumé


Vous pouvez créer des sites qui seront pratiques pour absolument tous les utilisateurs mobiles, quel que soit leur lieu de résidence. Mais pour cela, le développeur doit faire quelques efforts, car les appareils mobiles de différentes catégories de prix sont trÚs différents les uns des autres.

Plus le tĂ©lĂ©phone est abordable, plus il est probable qu'il puisse utiliser un processeur lent. Les performances des sites JavaScript dĂ©pendent de la vitesse de chargement du code et de la vitesse de son exĂ©cution. Cela devrait ĂȘtre considĂ©rĂ© pour ceux qui veulent crĂ©er des sites qui fonctionnent bien sur n'importe quel appareil et sur n'importe quel rĂ©seau.

Tout ce dont nous avons parlé ci-dessus est important pour les smartphones, mais il l'est encore plus pour les téléphones simples et peu coûteux, pour les appareils de la classe des «téléphones fonctionnels», qui sont trÚs populaires dans les pays en développement.

Chers lecteurs! Optimisez-vous vos projets Web pour les appareils mobiles faibles?

Source: https://habr.com/ru/post/fr482470/


All Articles