Testez le chargement de votre site avec webpagetest.org

Toujours plus vite

Le souci de vitesse de chargement d’un site Web n'est pas un nouveau paramètre : depuis le début du Web, le temps de chargement d'une page est un facteur important de succès : à l'époque la bande passante d'une connexion Internet était si faible, souvenez-vous il y a 20 ans, les modems 57k étaient souvent ce qu'il y avait de mieux. Du coup, une page ne devait pas peser plus de quelques centaines de kilo-octets pour pouvoir être chargée convenablement. Aujourd'hui, les connexions de 50 MBit ou plus ne sont pas rares.

Avec l'augmentation de la bande passante, la situation s’est raisonnablement relâchée, du moins en théorie. L'utilisation croissante d'appareils mobiles et d'écrans toujours plus grands à haute résolution (il y a 20 ans, les plus grands avaient une diagonale de 19" avec 1.200 x 800 pixels, aujourd'hui, 27" avec 2.560 x 1.440 pixels ou plus) propulse le site opérateur dans une situation similaire à celle d'il y a vingt ans : plus de bande passante, mais de plus en plus de données sont transmises - c'est un peu le même problème que l’on rencontre avec la batterie de nos smartphones : elles sont de plus en plus puissantes, mais les appareils consomment de plus en plus d'énergie...

La vitesse de chargement en tant que facteur de classement (Ranking-Faktor)

Aujourd'hui, le temps de chargement prend une nouvelle dimension : les moteurs de recherche, notamment Google, intègrent le temps de chargement dans le calcul de l'index. Autrement dit, plus un site Web est lent, moins il sera bien positionné dans les résultats de recherche. Dès lors, les développeurs ont bien pris en compte ce paramètre, autrefois quelque peu délaissé.

Facteurs qui influencent le temps de charge

Il existe plusieurs niveaux où les optimisations peuvent être ressenties sur le temps de chargement. D'une part le niveau infrastructure qui regroupe l'hébergement et les techonologies employées et d'autre part le site web en soi, c'est-à-dire sa structure et ses contenus.

Niveau d'hébergement : infrastructure, serveur Web, mise en cache (caching)

  • Infrastructure : d'une manière générale, il y aura des différences signifiantes en hébergeant votre site sur un serveur dédié ou sur un hébergement mutualisé - à priori, le site en dédié sera plus performant et surtout plus stable sur toute la durée de vie, la performance n'étant pas partagée avec d'autre sites (plus ou moins gourmants). La vitesse de chargement est aussi en étroite relation avec la connexion Internet du centre de données et la façon dont les routeurs sont connectés aux serveurs. L'infrastructure du datacenter n'influence pas que la vitesse mais aussi ce l'on appelle le délai avant le premier octet (Time to first Byte) : il s’agit du temps nécessaire au premier octet du serveur pour arriver au client.
  • Serveur Web : le serveur Web peut également jouer un rôle dans l'optimisation. En général, les serveurs Web avec Nginx sont plus rapides qu'Apache – cependant, avec un peu de configuration, cela n’est pas systématiquement le cas. Le choix du logiciel a donc une influence sur la vitesse. Les paramètres tels que keep alive augmentent aussi de manière significative le temps de chargement, car la connexion au serveur Web ne doit pas être „renégociée“ après chaque requête HTTP.
  • La mise en cache est un sujet complexe car il existe plusieurs niveaux de mise en cache (CDN, HTTP reverse proxy comme Varnish Cache, local cache, cache de base de données comme memcached ou Redis, ...). La mise en cache est l'un des moyens les plus efficaces pour réduire le temps de chargement, en fonction de la manière dont elle est utilisée. Il convient de noter que tout ne peut pas toujours être mis en cache - les pages avec une fréquence élevée de changement comme, par exemple, les portails d'information qui souhaitent que les visiteurs voient toujours les dernières nouvelles.

Niveaux du site : HTML / JS / CSS, éléments média

  • Sans même évoquer un HTML défectueux, avoir une structure de page correcte joue un grand rôle. La structure HTML d'un document doit toujours être aussi légère que possible, et une imbrication bizarre doit, autant que possible, être évitée. Ainsi, si ce n'est pas absolument nécessaire, les éléments HTML ne devraient pas être insérés via Javascript.
  • Les éléments multimédias, c'est-à-dire les images, doivent toujours être optimisés pour l'appareil - une grande image utilisée pour un PC de bureau doit être chargée dans une version plus petite pour un affichage sur smartphone.

Vérification de la vitesse de votre site Internet avec www.webpagetest.org

webpagetest.org permet à quiconque de mesurer et d'analyser le temps de chargement de son site Web gratuitement (accessible publiquement).

C'est aussi simple que ça

Pour commencer une analyse du site Web, vous avez seulement besoin de :

  • URL : entrez l'URL du site, de préférence en incluant https et les www, sinon le renvoi existant sera inclus dans le temps de chargement.
  • Lieu : d’où la mesure doit-elle être effectuée ? La localisation géographique joue également un rôle important - même si webpagetest.org intègre un facteur de correction dans les résultats
  • Navigateur : il peut être important de savoir quel navigateur est testé. Selon l'emplacement choisi, les options proposées peuvent différer. Vous pouvez également sélectionner les navigateurs mobiles.
  • Nombre de tests : il est recommandé d'effectuer plusieurs tests pour obtenir une moyenne plus significative.
  • Vue répétée : il s'agit du temps de chargement si un client (navigateur) charge une deuxième fois une page pour permettre de mieux considérer les mises en cache - il est recommandé de sélectionner la première vue et la vue répétée.

Vue d'ensemble des résultats

6 indicateurs (A à F - A est la meilleure note) sont utilisés pour une évaluation rapide des résultats.

Voici la signification des 6 indicateurs :

  1. Premier octet (First Byte Time) : il s’agit de la durée de réception du premier octet du serveur Web. Cette valeur ne peut pas être modifiée de votre part. La valeur dépend essentiellement de l'environnement d'hébergement physique (centre de données, serveur) et de l'utilisation actuelle des systèmes.
  2. Keep-alive enabled : option du serveur Web qui maintient la connexion entre le serveur et le navigateur ouverte évitant ainsi que la négociation TCP soit renouvelée à chaque fois. Une page Web a souvent 100 éléments ou plus à charger - une optimisation à priori légère mais qui peut faire la différence.
  3. Compress transfer : il s’agit également d’un paramètre de serveur Web. Le serveur Web peut compresser les données afin que moins de données soient transférées. Les navigateurs modernes peuvent gérer la transmission de données compressées sans exception.
  4. Compress images : ici, les opérateurs du site sont en demande. L'indicateur montre à quel point les images chargées sont compressées. La taille peut-elle être réduite (sans perte de qualité) ?
  5. Contenu statique du cache (Cache static content) : les éléments affichés proviennent-ils du cache ou proviennent-ils directement du serveur Web ?
  6. Utilisation du CDN (Effective use of CDN) : le contenu provient-il d'un CDN (Content Delivery Network) ?

Résultats de performance

Le tableau supérieur montre d'autres valeurs indispensables à prendre en compte comme le résultat du test de vitesse. Ici, la vitesse de l'affichage du site est décomposée en niveaux pour mieux identifier où sont les temps de chargement.

  • Load Time : temps de chargement de la page du site Web. La partie Fully Loaded mesure le temps de chargement plus 2 secondes, pour permettre aux éléments chargés via Javascript d'être pris en compte.
  • Premier octet (Time to First Byte - TTFB)  : temps nécessaire pour le premier octet du serveur au navigateur lorsque le site Web est appelé pour la première fois.
  • Démarrer le rendu (Start Render) : le temps nécessaire au navigateur pour commencer à afficher le site Web.
  • Indice de vitesse (Speed Index) : l'indice de vitesse est une valeur permettant d'évaluer la vitesse mesurée. Plus cette valeur est petite, mieux c'est. Voici quelques informations détaillées sur la façon de calculer cet index : https://sites.google.com/a/webpagetest.org/docs/using-webpagetest/metrics/speed-index

Détails - diagramme en cascade

Dans le diagramme en cascade, il est très facile de voir combien de demandes sont générées par le chargement de la page et à quelle vitesse les demandes individuelles sont traitées. Sur la base de codes couleurs, les demandes peuvent également être classées selon leur type : requête DNS, HTML/texte, JavaScript/texte, image ou autre type de contenu.

Détail du contenu

La section "Content Breakdown" est particulièrement intéressante pour voir les relations (quantité en nombre de fichiers ou en kilo-octets) entre texte, CSS, Javascript et images. Cela permet également de déterminer plus facilement où se situe le plus grand effet de levier lorsqu'il s'agit de définir des priorités pour l'optimisation.

Analyse d'images

L'élément relativement nouveau "Image Analysis" permet l'analyse de fichiers d'images. Cet élément vérifie chaque image, évalue la compression et la note (A-F). Il est également possible d'utiliser le service cloud moyennant des frais, mais sans obligation. Vous pouvez faire les optimisations vous-même - il existe de nombreux programmes d'édition d'image qui peuvent être utilisés à cette fin. Il y a aussi un article dans ce blog sur l'optimisation de l'image.

Un outil professionnel gratuit

webpagetest.org est un projet mature qui peut vraiment aider à l'optimisation de site Web. On apprécie particulièrement sa gratuité et son utilisation sans inscription. Parfois, vous devrez patienter un peu pour que votre demande d'analyse soit faite... vous n'êtes pas la seule personne à utiliser ce service.

WordPress: créer un site Web privé pour la famille et les amis

Dans un cadre privé, il n'est pas rare que vous ne souhaitez pas partager vos photos, vos vidéos et vos documents écrits avec tous.

Cependant, les partager avec vos amis et votre famille peut être intéressant. Facebook apparait parfois comme la solution idéale et facile. Beaucoup de personnes l’utilisent en pensant que le contenu reste bien privé - sans commentaire ...

Nous vous proposons une autre option (beaucoup plus sécurisée) : la création d’une page d'accueil WordPress accessible uniquement aux utilisateurs enregistrés. Pour que les visiteurs n’aient pas à se souvenir de leur mot de passe à chaque connexion, nous allons évidemment offrir la possibilité de s'inscrire – vous, votre famille et vos amis - via le login Facebook.

Méthode

Comment faire ?

  • Limiter l'accès
    • Configurer le plugin Members pour définir des rôles sur WordPress et rediriger l'accès à la page d'accueil du site Web via la page de connexion
    • Installer le plugin de l'éditeur des rôles WordPress (User role editor) pour créer une capacité individuelle
    • Personnaliser le fichier functions.php du thème pour cacher le contenu de la page d'accueil aux utilisateur ayant le rôle abonnés
    • Créer une page avec des informations pour les utilisateurs connectés, mais qui n'ont pas encore les autorisations appropriées
  • Installer / configurer un plugin pour permettre aux utilisateurs Facebook de se connecter sans identifiant ni mot de passe (Facebook Login)
    • Créer une application Facebook
    • Configurer le plugin WordPress Social

Limiter l'accès à la page d'accueil

Configurer le plugin "Members"

Ce plugin a deux fonctions pour notre cas d'utilisation :

  1. Interdir l'accès aux contenus de facon générale : les visiteurs doivent être inscrits.
  2. Créer un nouveau rôle Famille & Amis : en tant qu'administrateur, nous pouvons déplacer manuellement les abonnés (qui n'ont pas encore d'autorisations) au nouveau rôle Famille & Amis

Nous installons le plugin et nous nous occupons des paramètres :

  • Activation du site privé. Seul les visiteurs autorisés ont accès au contenu du site Web ; toutes les requêtes redirigent le visteur à la page d'inscription / de connexion tant que le visiteur n'est pas identifié.
  • Désactivation Feed. Aucune personne ou service non enregistré ne peut recevoir d'informations sur le contenu du site Web.

Les autres paramètres prédéfinis peuvent rester.

Créer une capacité individuelle

Le plugin d’éditeur de rôles utilisateurs (User Role Editor)  est populaire et gratuit. Il permet d’attribuer des rôles sous WordPress. Nous allons créer une nouvelle capacité pour notre projet et vérifier si le visiteur a ou non cette autorisation.

Nous créons ainsi une capacité appelée oooooxooooo et nous l’assignons au rôle "Famille et amis" ainsi qu'au rôle d'administrateur. Si votre site contient des utilisateurs utilisant d'autres rôles  (éditeur, ...), vous pouvez également les y attribuer. Dans tous les cas, NE PAS assigner la capacité au rôle "abonné" !

Paramètres supplémentaires des fonctions.php

Le plugin membres n'est malheureusement pas suffisant pour notre projet. En effet, avec ce plugin, vous pouvez uniquement inciter les visiteurs à s’inscrire. Par défaut, un utilisateur connecté a accès à tous les contenus (pages / articles) du site. Mais même si vous définissez les autorisations d'utilisateur sur toutes les pages et tous les articles, le visiteur non autorisé (par défaut, c'est le rôle abonné) obtient, par exemple, les titres des articles, seul le contenu est verrouillé.

Ce n'est pas ce que nous souhaitons ; nous voulons bloquer complètement l'accès à tous ceux qui n'ont pas explicitement l'autorisation de voir les contenus..

Code pour fonctions.php

function my_page_template_redirect(){
  if( is_user_logged_in() && ! current_user_can( 'oooooxooooo' ) && ! is_page( 'stop' ) ){
    wp_redirect( home_url( '/stop/' ) );
    exit();
  }

}

add_action( 'template_redirect', 'my_page_template_redirect' );

Pour bloquer complètement le site, les visiteurs non autorisés doivent être redirigés vers une page spécifique. Pour cela, nous ajoutons un code supplémentaire au fichier functions.php du thème.

Voici quelques brèves explications :

  • Chaque thème a une functions.php. Ce fichier central contrôle le comportement d'un thème et relie différents fichiers ensembles.
  • Le code supplémentaire vérifie 3 éléments :
  • Le visiteur est connecté
  • Le visiteur n'a pas la capacité oooooxooooo
  • Le visiteur n’est pas déjà sur la page Stop

Les 3 conditions remplies, le visiteur est renvoyé à une page "Stop".

Code pour fonctions.php Multisite

function my_page_template_redirect(){
  global $blog_id;
  if( is_user_logged_in() && ! current_user_can_for_blog( $blog_id, 'oooooxooooo') && ! is_page( 'stop' ) ){
    wp_redirect( home_url( '/stop/' ) );
    exit();
  }

}

add_action( 'template_redirect', 'my_page_template_redirect' );

Page d’informations (Stop) pour les utilisateurs rejetés

Les visiteurs qui s'inscrivent sans avoir les autorisations nécessaires ne doivent pas être simplement renvoyés sur une page blanche ou vers un message d'erreur. Il est, effectivement, préférable de les avertir qu’ils n’ont pas les droits pour accéder à cette page Web et les renvoyer vers le propriétaire de la page. Une information supplémentaire peut être indiquée aux utilisateurs de Facebook qui utilisent cette connexion pour la première fois et ne disposent donc pas encore d'autorisation.

Connexion Facebook

Afin de ne pas avoir avoir à inscrire tous vos amis au préalable et de les forcer à mémoriser des nouvelles données d'accàs, nous installons une fonction de connexion à Facebook. Comme vous l'avez probablement déjà vu, nous allons mettre en place un bouton "Connectez-vous avec Facebook" sur la page de connexion du site Web.

Quel que soit le plugin de connexion Facebook utilisé, nous avons besoin d'une application Facebook, à laquelle le plugin peut se connecter si un utilisateur de Facebook souhaite se connecter.

Application Facebook

Pour créer une application Facebook, connectez-vous ici : https://developers.facebook.com. L'explication ne va pas dans trop le détail, mais en suivant la procédure ci-dessous, vous devriez y arriver facilement.

Bien sûr, vous devez avoir des données d'accès Facebook, sinon inscrivez-vous.

  • Créez une nouvelle application
  • -> Créer l'ID de l'application - Nom d'affichage + email de contact
  • Contrôle de sécurité (Captcha)
  • Paramètres : Sélectionnez une catégorie, ajoutez une plateforme -> Site Web -> Entrez l'URL (sans slash à la fin). Enregistrez
  • App Review : publier et confirmer
  • Copiez et collez les codes dans WordPress

Configurer un plugin WordPress Social Login

Nous utilisons maintenant comme plugin WordPress Social Login : ce plugin est gratuit et peut également être utilisé pour Google, Twitter et beaucoup d'autres réseaux.

Pour que la connexion fonctionne comme souhaité, nous allons configurer les points suivants :

  1. Copier et coller les données de l'application Facebook dans le plugin
  2. Les enregistrements et les demandes d’inscription sont autorisées
  3. Les utilisateurs connectés via les réseaux sociaux reçoivent le rôle «Abonné» - c'est le groupe par défaut, mais vous êtes libre de le définir explicitement

En tant qu'admin, pour être informé qu’un nouvel utilisateur Facebook s'est inscrit, effectuez ce paramétrage : Paramètres > Connexion sociale WP > Widget> Paramètres avancés > Notification > "Notifiez uniquement l'administrateur de blog d'un nouvel utilisateur".

Ajout des données Facebook App

Paramètres généraux

Autorisation pour les nouveaux enregistrements

Facultatif : Supprimer la barre d'administration

Si vous souhaitez que les utilisateurs du groupe «Famille & amis» ou les non-administrateurs ne voient pas la barre d'administration, vous pouvez la cacher. Pour cela, un code est ajouté dans les fonctions.php :

function remove_admin_bar() {
if( ! current_user_can('administrator') && ! is_admin() ){
show_admin_bar(false);
}
}
add_action('after_setup_theme', 'remove_admin_bar');

En résumé

Nous avons modifié un site web existant, de sorte que le contenu ne peut être vu qu'après inscription du visiteur - si le rôle correspond.

Le login seul ne suffit pas, le visiteur peut ne pas appartenir au groupe des abonnés (rôle par défaut) et doit avoir une autorisation supplémentaire oooooxooooo. Les visiteurs qui ne l'ont pas sont redirigés vers une page définie au préalable qui les informe du manque de droits nécessaires pour voir les contenus du site.

Ensuite, nous avons mis en place un «connecteur Facebook» : les utilisateurs de Facebook peuvent se connecter sans entrer de mot de passe. Les utilisateurs de Facebook nouvellement inscrits sont en attente de votre autorisation et ne peuvent accéder à quoi que ce soit avant votre validation. Attention : si le visiteur utilise un adblocker, la connexion Facebook peut échouer.

En tant qu'administrateur, vous êtes automatiquement informé des nouveaux enregistrements. Si vous connaissez l'utilisateur de Facebook, vous pourrez lui attribuer le rôle «Famille & Amis».

[Update] Steve : maintenance avec comparaison d’images – Gestion WordPress pour professionnels

Action : mises à jour WordPress

Les mises à jour de base WordPress fonctionnent généralement sans aucun problème. Cependant lors des mises à jour de plugins ou de thèmes cela peut se passer differemment. Les causes de certaines difficultés de mises à jour peuvent être très différentes : bugs dans le plugin lui-même, problème de compatibilité avec d’autres plugins … l’impact potentiel des erreurs est également très différent, dans certains cas, c’est le site dans son intégralité, qui ne s’affiche plus ou alors des messages d’erreur PHP peuvent apparaître au milieu de la page. La plupart du temps, il ne s’agit que de petits désagréments, mais qui restent néanmoins indésirables.

 

Comparaison des captures d’écran après une mise à jour

Avec le système de comparaison « avant et après » sous forme de captures d’écran automatiques du site, même de petites erreurs peuvent être détectées. Le système recherche automatiquement tout changement et indique le nombre de différences observées (en%).

Les erreurs survenues sont conservées dans l’historique des mises à jour de Steve avec les captures d’écran correspondantes. Cela permet, le cas échéant, l’importation de sauvegardes appropriées – par défaut, à chaque processus de mises à jour, une sauvegarde est créée pour le site.

Le Steve de demain : sauvegarde automatique de restauration, marquage (tagging) automatique de plugin et bien plus…

Prochainement, il est prévu d’étendre la fonctionnalité SLA pour nos clients WordPress :

  • Les clients pourront recevoir un e-mail avec un lien vers la comparaison des captures d’écran afin de vérifier que tout est en ordre pour la mise à jour.
  • Les clients pourront spécifier que tout est en ordre, ou alors que des erreurs sont apparues ; les messages seront directement transmis à Steve afin de restaurer la version précédente. Steve pourra tagger les plugins comme « cassé » le cas échéant.
  • Le processus de staging (copie du site et mises à jour effectuées sur la copie) peut également être transposé : après avoir été validé par le client, la mise à jour est effectuée sur l’instance WordPress en live.