2024-02-02 15:13:15 +00:00
# Bonne pratiques d'écoconception appliqué au mobile
## Contexte
L'objectif de ce document est de fournir un référentiel d'écoconception adapté au mobile. L'application des bonnes pratiques ci-dessous ont toutes un but commun : prolonger la durée de vie des terminaux des utilisateurs et utilisatrices.
## Les besoins
Étant donné les évolutions continues du mobile, ce référentiel a besoin de régulièrement être mis à jour.
Toute proposition ou idée d'amélioration, de modification ou de suppression est bienvenue.
## Comment contribuer ?
N'hésitez pas à lire [le guide des contributeurs ](CONTRIBUTING.md ).
## La liste des Bonnes Pratiques
Produit :
* [Éliminer les fonctionnalités non essentielles ](chapters/MBP_001_fr.md )
* [Quantifier précisément le besoin ](chapters/MBP_002_fr.md )
UI/UX :
* [Optimiser le parcours utilisateur ](chapters/MBP_003_fr.md )
* [Préférer la saisie assistée à l'autocomplétion ](chapters/MBP_004_fr.md )
* [Favoriser un design simple, épuré, adapté au mobile ](/chapters/MBP_005_fr.md )
* [Optimiser la récupération en fonction du cycle de vie de l'application ](chapters/MBP_006_fr.md )
* [Libérer la mémoire des traitements consommateurs en fonction de l'état de l'application ](chapters/MBP_006bis_fr.md )
*
* [Stocker localement les données de configuration non liées aux données du serveur ](chapters/MBP_007_fr.md ) // TODO à discuter car côté mobile, beaucoup des données statiques sont déjà sur l'appareil.
2024-02-05 15:08:18 +00:00
* [Déployer un Android App Bundle (AAB) plutôt qu'un APK ](chapters/MBP_008_fr.md ) // TODO a reformuler
2024-02-02 15:13:15 +00:00
* [Supprimer les ressources non utilisées ](chapters/MBP_009_fr.md )
2024-02-05 15:08:18 +00:00
* [Minifier le code ](chapters/MBP_010_fr.md )
* [Ne pas redimensionner les images coté application ](chapters/MBP_011_fr.md )
* [Éviter d'utiliser des images matricielles ](chapters/MBP_012_fr.md )
2024-02-02 15:13:15 +00:00
2024-02-05 15:08:18 +00:00
// TODO
// MAIN/IO thread ?
2024-02-02 15:13:15 +00:00
// Repository (stratégie offline)
2024-02-05 15:08:18 +00:00
// Eviter image non vectoriel (/chapters/BP_023_fr.md)
// Etudier si l'usage de style/theme plutôt que paramètre individuel est plus efficace (BP_024_fr BP_025_fr)
// Utiliser les paramètres de style abrégés // [Utiliser les notations CSS abrégées ](/chapters/BP_026_fr.md )
// Utiliser glide ou équivalent pour mettre en cache les images et éviter de les recharger
// Notifications
// ABI ??
// Feature play store
2024-02-02 15:13:15 +00:00
// TODO pas encore fait la suite
* [Optimiser les images vectorielles ](/chapters/BP_036_fr.md )
* [Utiliser le chargement paresseux ](/chapters/BP_037_fr.md )
* [Utiliser le rechargement partiel d'une zone de contenu ](/chapters/BP_038_fr.md )
* [Éviter les animations JavaScript / CSS ](/chapters/BP_039_fr.md )
* [N'utilisez que les portions indispensables des librairies JavaScript et frameworks CSS ](/chapters/BP_040_fr.md )
* [Ne pas faire de modification du DOM lorsqu’ on le traverse ](/chapters/BP_041_fr.md )
* [Rendre les éléments du DOM invisibles lors de leur modification ](/chapters/BP_042_fr.md )
* [Réduire au maximum le repaint (appearence) et le reflow (layout) ](/chapters/BP_043_fr.md )
* [Utiliser la délégation d'évènements ](/chapters/BP_044_fr.md )
* [Modifier plusieurs propriétés CSS en 1 seule fois ](/chapters/BP_045_fr.md )
* [Valider votre code avec un Linter ](/chapters/BP_046_fr.md )
* [Mettre en cache les objets souvent accédés en JavaScript ](/chapters/BP_049_fr.md )
* [Réduire les accès au DOM via JavaScript ](/chapters/BP_054_fr.md )
* [Utiliser tous les niveaux de cache du CMS ](/chapters/BP_057_fr.md )
* [Optimiser et générer les médias avant importation sur un CMS ](/chapters/BP_058_fr.md )
* [Encoder les sons en dehors du CMS ](/chapters/BP_060_fr.md )
* [Mettre en cache les données calculées souvent utilisées ](/chapters/BP_064_fr.md )
* [Supprimer tous les warning et toutes les notices ](/chapters/BP_070_fr.md )
* [Éviter d'effectuer des requêtes SQL à l’ intérieur d’ une boucle ](/chapters/BP_072_fr.md )
* [Ne se connecter à une base de données que si nécessaire ](/chapters/BP_073_fr.md )
* [Optimiser les requêtes aux bases de données ](/chapters/BP_075_fr.md )
* [Éviter le transfert d'une grande quantité de données pour réaliser un traitement ](/chapters/BP_076_fr.md )
* [Minifier les fichiers CSS, JavaScript, HTML et SVG ](/chapters/BP_077_fr.md )
* [Compresser les fichiers CSS, JavaScript, HTML et SVG ](/chapters/BP_078_fr.md )
* [Combiner les fichiers CSS et JavaScript ](/chapters/BP_079_fr.md )
* [Optimiser les images ](/chapters/BP_080_fr.md )
* [Optimiser la taille des cookies ](/chapters/BP_082_fr.md )
* [Favoriser HSTS Preload list aux redirections 301 ](/chapters/BP_084_fr.md )
* [Mettre en place un plan de fin de vie du site ](/chapters/BP_085_fr.md )
* [Choisir un hébergeur "éco-responsable" ](/chapters/BP_086_fr.md )
* [Privilégier un fournisseur d'électricité écoresponsable ](/chapters/BP_087_fr.md )
* [Adapter la qualité de service et le niveau de disponibilité ](/chapters/BP_088_fr.md )
* [Utiliser des serveurs virtualisés ](/chapters/BP_089_fr.md )
* [Optimiser l'efficacité énergétique des serveurs ](/chapters/BP_090_fr.md )
* [Installer le minimum requis sur le serveur ](/chapters/BP_091_fr.md )
* [Mettre les caches entièrement en RAM (opcode et kvs) ](/chapters/BP_092_fr.md )
* [Stocker les données dans le cloud ](/chapters/BP_093_fr.md )
* [Héberger les ressources (CSS/JS) sur un domaine sans cookie ](/chapters/BP_094_fr.md )
* [Éviter les redirections ](/chapters/BP_095_fr.md )
* [Afficher des pages d'erreur statiques ](/chapters/BP_096_fr.md )
* [Utiliser un serveur asynchrone ](/chapters/BP_097_fr.md )
* [Utiliser un CDN ](/chapters/BP_098_fr.md )
* [Utiliser un cache HTTP ](/chapters/BP_099_fr.md )
* [Ajouter des entêtes Expires ou Cache-Control ](/chapters/BP_101_fr.md )
* [Mettre en cache les réponses Ajax ](/chapters/BP_102_fr.md )
* [Réduire au nécessaire les logs des serveurs ](/chapters/BP_103_fr.md )
* [Désactiver le DNS lookup d’ Apache ](/chapters/BP_104_fr.md )
* [Apache Vhost : désactiver le AllowOverride ](/chapters/BP_105_fr.md )
* [Désactiver les logs binaires ](/chapters/BP_106_fr.md )
* [Compresser les documents ](/chapters/BP_107_fr.md )
* [Optimiser les PDF ](/chapters/BP_108_fr.md )
* [Limiter les e-mails lourds et redondants ](/chapters/BP_109_fr.md )
* [N'utiliser que des fichiers double opt-in ](/chapters/BP_110_fr.md )
* [Limiter la taille des e-mails envoyés ](/chapters/BP_111_fr.md )
* [Adapter les sons aux contextes d'écoute ](/chapters/BP_112_fr.md )
* [Adapter les textes au web ](/chapters/BP_113_fr.md )
* [Adapter les vidéos aux contextes de visualisation ](/chapters/BP_114_fr.md )
* [Limiter les outils d'analytics et les données collectées ](/chapters/BP_4001_fr.md )
* [Limiter l'utilisation des GIFs animés ](/chapters/BP_4002_fr.md )
* [Éviter la lecture et le chargement automatique des vidéos et des sons ](/chapters/BP_4003_fr.md )
* [Utiliser les compartiments CSS ](/chapters/BP_4004_fr.md )
* [Fournir une alternative textuelle aux contenus multimédias ](/chapters/BP_4005_fr.md )
* [Privilégier HTTP/2 à HTTP/1 ](/chapters/BP_4006_fr.md )
* [Économiser de la bande passante grace à un ServiceWorker ](/chapters/BP_4007_fr.md )
* [Mettre en place un sitemap efficient ](/chapters/BP_4008_fr.md )
* [Assurer la compatibilité avec les plus anciens appareils et logiciels du parc ](/chapters/BP_4009_fr.md )
* [Réduire le volume de données stockées au strict nécessaire ](/chapters/BP_4011_fr.md )
* [Mettre en place une politique d'expiration et suppression des données ](/chapters/BP_4012_fr.md )
* [Limiter le recours aux canvas ](/chapters/BP_4013_fr.md )
* [S'assurer que les parcours utilisateurs permettent de réaliser leur action prévue ](/chapters/BP_4014_fr.md )
* [Avoir un titre de page et une metadescription pertinents avec le contenu de la page ](/chapters/BP_4015_fr.md )
* [Utiliser la version la plus récente du langage ](/chapters/BP_4016_fr.md )
* [Ne charger des données/du code que lorsqu'elles sont/il est nécessaire ](/chapters/BP_4017_fr.md )
* [Éliminer les fonctionnalités non utilisées ](/chapters/BP_4018_fr.md )
* [Préférer une PWA à une application mobile native similaire au site web ](/chapters/BP_4019_fr.md )
* [Éviter les temps de blocages par des traitements JavaScript trop longs ](/chapters/BP_4020_fr.md )
* [Mettre en place une architecture élastique ](/chapters/BP_4021_fr.md )
* [Limiter le nombre d'appels aux API HTTP ](/chapters/BP_4022_fr.md )
* [Limiter le recours aux carrousels ](/chapters/BP_4030_fr.md )
* [Avoir une stratégie de fin de vie des contenus ](/chapters/BP_4031_fr.md )
* [Mettre en place un "Circuit breaker" ](/chapters/BP_4032_fr.md )
* [Favoriser le "Request collapsing" ](/chapters/BP_4033_fr.md )
* [S’ appuyer sur les services managés ](/chapters/BP_4034_fr.md )
* [Préférer la pagination au défilement infini ](/chapters/BP_4035_fr.md )
* [Entretenir son site régulièrement ](/chapters/BP_4036_fr.md )
* [Limiter le nombre d'extensions dans un CMS ](/chapters/BP_4037_fr.md )
* [Sécuriser l'accès à l'administration ](/chapters/BP_4038_fr.md )
* [Ne pas afficher les documents à l'intérieur des pages ](/chapters/BP_4039_fr.md )
## Licence
Les sources et contenus de ce projet sont [protégés ](LICENCE.md )