Tests et Montées en Charge
En tant que concepteur de site Web, vous devez veiller à répondre aux besoins immédiats des utilisateurs (tester le site auprès d'utilisateurs finaux), optimiser les flux de navigation (tout en visant l'accessibilité maximale), et enfin, tester le site pour s'assurer qu'il respecte les standards. Comme en programmation, plus un problème sera détecté en amont, moins le coût de correction sera élevé. Il y a d'abord les classiques : le validateur syntaxique du W3C (http://vali-dat0r.w3.org/), l'analyseur de liens (http://validat0r.w3.org/checklink/) à la recherche d'un lien cassé, ainsi que le service de validation CSS du W3C qui vérifie la conformité des feuilles de style en cascade (CSS) autonomes ou intégrées aux documents (X)HTML (http://jig-saw.w3.org/css-validat0r/), ainsi qu'un test de vérification orthographique du français ou de l'anglais (http://www.w3.org/2002/01/spell-checker).
Il existe aussi des batteries de tests plus originaux : comme un test de temps de chargement (http://www.i-hit.com/all-in-one/tool.loading-time-checker.htm), un test de lisibilité (http://www. juicystudio.com/fog/) ainsi que d'accessibilité (http://www.usablenet.com/products_services/lift_online_free_trial/lift_online_free_triaLh tml), un test de qualité (http://webxact.watchfire.com/), et un test de simulation de Google (http;//www.gritechnologies.com/tools/ spider.go). Il existe aussi un test intéressant de performance depuis plusieurs localisations différentes (http://internetsupervision.com /scripts/urlcheck/check.aspx) et un test de validité des dates d'expiration des pages dans le cache (http://www.web-caching.com). Les logiciels de montée en charge sont nombreux (aussi bien libres que commerciaux) et doivent s'effectuer en local. Par exemple avec httperf vous pouvez exiger de lancer x sessions à la seconde ( -rate), avec x sessions à lancer se composant chacune de x requêtes. Ainsi vous simulerez de nombreux utilisateurs arrivant sur le serveur par seconde.
Maintenant, si vous devez tester la montée en charge d'une application basée J2EE ou Visual Studio .Net ou même ColdFusion, vous aurez besoin d'écrire des scénarii de tests. Par exemple, en France, le distributeur Ideo Technologies propose OpenLoad de l'éditeur OpenDemand.
Avec cet outil, vous avez accès à une configuration très fine (timeouts, type de navigateur, plate-forme, la vitesse de connexion, etc.), et vous pouvez le dimensionner pour générer des dizaines de milliers d'utilisateurs virtuels et répondre à des demandes de très grosses montées en charge.
Gérer le cache de ses pages en PHP
II y a quelques années, le concepteur moyen pensait à tort que plus son site serait riche visuellement, plus il recevrait de visiteurs. Aujourd'hui, si le poids des pages continue d'augmenter en même temps que la rapidité des transferts, on pense heureusement plus en terme d'accessibilité pour tous qu'en terme de richesse visuelle.
En ce qui concerne la page statique HTML le développeur peut jouer directement sur le mécanisme d'échange HTTP. Lorsqu'un navigateur demande une page avec GET, le serveur lui renvoie la date courant, puis la date de dernière modification.
D’autres renseignements sont renvoyés comme la date de dernière modification du document. Or, lorsque le navigateur client demande ce document, il envoie une date et un identifiant unique de la version dont il dispose. Par conséquent le serveur transmettra à nouveau le document uniquement si celui-ci a été modifié. Alexandre Alapetite a développé une librairie qui sera utilisée conjointement aux sessions. Celle-ci vérifie que les données contenues dans $_SESSION ont été modifiées depuis la dernière génération du document par le biais d'une somme de contrôle MD5 stockée dans l'en-tête HTTP Etag. Voici concrètement ce que cela donne :
Exemple session.php
<?php
session_cachejimiter("); //Désactive la génération automatique d'entêtés par la session
session_start(); //Démarre la session
requirejwcefhttpconditional.php1);
//Récolte la date de la dernière modification du contenu (format Timestamp Unix)
//par le biais par exemple d'une requête à une base de données (ou date "en dur"...)
$dateDerniereModification=...;
if (httpConditionaljSdateDemiereModification^^Jalse^u^true)) {//Aucune modification depuis le dernier passage du client ... //Ferme la base de données, et autres nettoyages exit(); //Pas besoin d'envoyer autre chose
}
//!\ Ne pas envoyer de texte au client avant cette ligne
... //La suite du script, comme s'il n'y avait pas cette première partie
Vous devez inclure la bibliothèque et effectuer un test avant tout envoi
de données au client. Et tout le bénéfice de cette technique ira à la
bande passante...

|

|
|