mobile-best-practice/README.md

155 lines
9.7 KiB
Markdown
Raw Normal View History

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.
* [Déployer un Android App Bundle (AAB) plutôt qu'un APK](chapters/MBP_008_fr.md)
* [Supprimer les ressources non utilisées](chapters/MBP_009_fr.md)
* [Minifier et obfusquer le code](chapters/MBP_010_fr.md)
// TODO SavedStateHandle
// Repository (stratégie offline)
// TODO pas encore fait la suite
* [Proposer un traitement asynchrone lorsque c'est possible](/chapters/BP_008_fr.md) // TODO à voir si équivalent.
* [Choisir les technologies les plus adaptées](/chapters/BP_015_fr.md)
* [Utiliser certains forks applicatifs orientés "performance"](/chapters/BP_016_fr.md)
* [Choisir un format de données adapté](/chapters/BP_017_fr.md)
* [Limiter le nombre de domaine servant les ressources](/chapters/BP_018_fr.md)
* [Remplacer les boutons officiels de partage des réseaux sociaux](/chapters/BP_019_fr.md)
* [Découper les CSS](/chapters/BP_021_fr.md)
* [Limiter le nombre de CSS](/chapters/BP_022_fr.md)
* [Préférer les CSS aux images](/chapters/BP_023_fr.md)
* [Écrire des sélecteurs CSS efficaces](/chapters/BP_024_fr.md)
* [Grouper les déclarations CSS similaires](/chapters/BP_025_fr.md)
* [Utiliser les notations CSS abrégées](/chapters/BP_026_fr.md)
* [Fournir une CSS print](/chapters/BP_027_fr.md)
* [Favoriser les polices standards](/chapters/BP_029_fr.md)
* [Préférer les glyphs aux images](/chapters/BP_030_fr.md)
* [Valider les pages auprès du W3C](/chapters/BP_031_fr.md)
* [Externaliser les CSS et JavaScript](/chapters/BP_032_fr.md)
* [Ne pas redimensionner les images coté navigateur](/chapters/BP_034_fr.md)
* [Éviter d'utiliser des images matricielles pour l'interface](/chapters/BP_035_fr.md)
* [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 lorsquon 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 à lintérieur dune 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 dApache](/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)
* [Sappuyer 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)