mobile-best-practice/README.md

155 lines
9.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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)