Les bonnes pratiques présentées ci-dessous sont celles de la 2ème édition du référentiel paru en septembre 2015.

Ce contenu sera bientôt mis à jour avec la 3ème édition du référentiel parue le 25 avril 2019.

Les 115 bonnes pratiques

Rubrique Description
1Conception fonctionnelle

Eliminer les fonctionnalités non essentielles

2Conception fonctionnelle

Quantifier précisément le besoin

3Conception fonctionnelle

Fluidifier le processus

4Ergonomie

Préférer la saisie assistée à l'autocompletion

7Ergonomie

Respecter le principe de navigation rapide dans l’historique

5Ergonomie

Favoriser un design simple, épuré, adapté au web

6Ergonomie

Créer un site responsive

8Conception fonctionnelle

Proposer un traitement asynchrone lorsque c'est possible

9Conception technique

Limiter le nombre de requêtes HTTP

10Conception technique

Stocker les données statiques localement

11Conception technique

Choisir les technologies les plus adaptées

15Conception technique

Utiliser un framework ou développer sur mesure

12Conception technique

Limiter le recours aux plugins

115Conception technique

Limiter l'utilisation du Flash

31Développement

Valider les pages auprès du W3C

32Développement

Externaliser les CSS et JavaScript

29Conception graphique

Favoriser les polices standard

30Conception graphique

Préférer les glyphs aux images

46Conception graphique

Supprimer les balises images dont l’attribut SRC est vide

47Conception graphique

Redimensionner les images en dehors du HTML

48Conception graphique

Eviter d'utiliser des images bitmap pour l'interface

49Conception graphique

Optimiser les images vectorielles

20Conception graphique

Générer des spritesheets CSS

21Conception graphique

Découper les CSS

22Conception graphique

Limiter le nombre de CSS

23Conception graphique

Préférer les CSS aux images

24Conception graphique

Ecrire des sélecteurs CSS efficaces

25Conception graphique

Grouper les déclarations CSS similaires

26Conception graphique

Utiliser les notations CSS abrégées

27Conception graphique

Fournir une CSS print

28Conception graphique

Utiliser les commentaires conditionnels

45Conception graphique

Modifier plusieurs propriétés CSS en 1 seule fois

33Développement

Valider le code JavaScript

34Développement

Eviter d'utiliser try-catch-finally

35Développement

Utiliser les opérations primitives

36Développement

Mettre en cache les objets souvent accédés en JavaScript

61Conception

Utiliser un thème léger

51Développement

Priviliégier les fonctions inline

19Conception

Remplacer les boutons officiels de partage des réseaux sociaux

52Développement

Donner des fonctions en paramètre à setTimeout() et setInterval() plutôt que des string

53Développement

Eviter les for - in

54Développement

Réduire les accès au DOM via JavaScript

41Développement

Ne pas faire de modification du DOM lorsqu’on le traverse

42Développement

Rendre les éléments du DOM invisibles lors de leur modification

43Développement

Réduire au maximum le repaint (appearence) et le reflow (layout)

44Développement

Utiliser la délégation d'évènements

55Développement

Privilégier les changements visuels instantanés

39Développement

Eviter les animations Javascript / CSS coûteuses

38Développement

Utiliser Ajax pour certaines zones de contenu

50Développement

Utiliser la méthode GET pour les requêtes Ajax

13Conception technique

Favoriser les pages statiques

14Conception technique

Créer une architecture applicative modulaire

16Conception technique

Utiliser certains forks applicatifs orientés "performance"

17Conception technique

Choisir un format de données adapté

18Conception technique

Limiter le nombre de domaine servant les ressources

56Conception technique

Utiliser un système de templating (Smarty, Twig)

57Conception technique

Utiliser tous les niveaux de cache du CMS

58Conception technique

Générer les PDF en dehors du CMS

59Conception technique

Redimensionner les images en dehors du CMS

60Conception technique

Encoder les sons en dehors du CMS

55Conception technique

Mettre en cache le Bytecode

62Conception technique

Mettre en cache les données calculées souvent utilisées

68Développement

Libérer de la mémoire les variables qui ne sont plus nécessaires

69Développement

Ne pas appeler de fonction dans la déclaration d’une boucle de type for

70Développement

Supprimer tous les warning et toutes les notices

71Développement

Utiliser des variables statiques

64Développement

Eviter la ré-écriture des getter / setter natifs

63Développement

Ne pas assigner inutilement de valeur aux variables

66Développement

Utiliser la simple côte (') au lieu du guillemet (")

67Développement

Remplacer les $i++ par ++$i

72Développement

Eviter d'effectuer des requêtes SQL à l’intérieur d’une boucle

73Développement

Ne se connecter à une base de données que si nécessaire

74Développement

Ne jamais faire de SELECT * FROM

75Développement

Limiter le nombre de résultats (clause LIMIT)

76Développement

Utiliser les procédures stockées

80Hébergement

Optimiser les images bitmap

40Hébergement

N'utilisez que les portions indispensables des librairies Javascript et frameworks CSS

77Hébergement

Minifier les fichiers CSS

81Hébergement

Minifier les fichiers JavaScript

78Hébergement

Compresser les librairies CSS et Javascript

79Hébergement

Combiner les fichiers CSS et JavaScript

82Hébergement

Optimiser la taille des cookies

83Hébergement

Compresser la sortie HTML

86Conception technique

Choisir un hébergeur "vert"

87Conception technique

Utiliser une électricité "verte"

88Conception technique

Adapter la qualité de service et le niveau de disponibilité

89Conception technique

Utiliser des serveurs virtualisés

90Conception technique

Optimiser l'efficacité énergétique des serveurs

91Conception technique

Installer le minimum requis sur le serveur

92Conception technique

Mettre les caches entièrement en RAM (opcode et kvs)

84Conception technique

Favoriser HSTS Preload list aux redirections 301

93Conception technique

Stocker les données dans le cloud

106Hébergement

Désactiver les logs binaires de MySQL / MariaDb

97Hébergement

Utiliser un serveur asynchrone

95Hébergement

Limiter le recours au SSL

94Conception technique

Héberger les ressources (CSS/JS) sur un domaine sans cookie

85Conception technique

Mettre en place un plan de fin de vie du site

96Conception technique

Ne pas générer de page 404

99Hébergement

Désactiver certains logs d’accès du serveur web

100Hébergement

Désactiver le DNS lookup d’Apache

101Hébergement

Apache Vhost : désactiver le AllowOverride

98Hébergement

Utiliser un CDN

103Hébergement

Utiliser un reverse proxy

104Hébergement

Mettre en cache le favicon.ico

105Hébergement

Ajouter des entêtes Expires ou Cache-Control

37Hébergement

Utiliser le chargement paresseux des images

102Hébergement

Mettre en cache les réponses Ajax

107Contenu

Compresser les documents

108Contenu

Optimiser les PDF

109Contenu

Dédoublonner systématiquement les fichiers avant envoi

110Contenu

N'utiliser que des fichiers double opt-in

111Contenu

Préférer le texte brut au HTML

112Contenu

Adapter les sons aux contextes d'écoute

113Contenu

Adapter les textes au web

114Contenu

Adapter les vidéos aux contextes de visualisation