Règles pour de meilleures performances

La performance est un de mes chevaux de bataille, chaque développeur devrait lire les 13 règles pour une meilleure performancede Yahoo

Voici la conférence de Steve Souders (Chief Perfomance chez Yahoo!)

Steve Souders a aussi écrit un livre « High performance Web site », le livre sort le 21/09 et j’ai fait la précommande. je parlerai donc de ce livre ici.

Javascript : attention aux chargements

Vous avez surement remarqué depuis l’apparition des sites web 2.0 avec l’apparition d’Ajax, le code Javascript des sites a pris de l’embonpoint. Raison à cela : la multiplication des librairies javascript (prototype, script.aculo.us, dojo et autres librairies).

On se retrouve avec 5 / 6 voire 10 includes javascript au début de la page (sans compter les tags google analytics et autres).

Donc parfois la première page est souvent laborieuse à venir . Après je vous accorde que le navigateur fait son boulot et gère correctement le cache mais le chargement de la première page c’est aussi la première impression de l’internaute.

En fait le probleme est très simple, un navigateur ne parallelise pas le chargement des includes javascript, il les lit dans l’ordre car il interprete le code. On se retrouve donc avec une suite de requetes de chargements / interpretations de fichier javascript.

La solution est simple, vous pouvez développer avec une liste de fichiers javascript mais lors de la mise en production, concatenner tous vos fichiers javascript en 1 seul (plus gros mais unique donc un peu moins rapide à charger mais une seule requete et pas d’attente)

Economisez votre serveur : Triez en Javascript

Avec un peu de javascript, on peut assez facilement dimunuer le nombre de requetes vers le serveur et ainsi le soulager de travail inutil. En effet, il est toujours mieux de faire le travail sur le poste du client que sur le serveur !

Un exemple très simple est « les tris sur les tables HTML« , vous avez un tableau triable avec la possibilité de trier selon plusieurs colonnes. En php, c’est un peu long a mettre en place il faut gérer le « ORDER BY« , les différentes clés… pour la plupart du temps une petite liste.

Bien sûr, quand la requete renvoit 10000 élements c’est plus difficile de faire autrement mais est-ce vraiment le cas ?

Personnelement j’utilise une petite libriairies Javascript sortable, qui permet de rendre une table HTML toute simple en veritable petite tableau Excel.

Voici un exemple sur mon site Wanarun. Vous y verrez aussi une petite surprise pour la gestion des pages…

Opération booléenne en PHP

PHP est un language non typé, et c’est parfois le casse-tête en particulier pour les tests booléens, j’avoue que je prefère parfois utilisé le === en particulier sur la fonction strpos. Qui ne c’est pas fait avoir sur un « if (strpos) » !

Pour vous tester sur la logique booléenne voilà un test pour remettre à jour vos neurones.

Vous avez un trou de mémoire concernant toutes ses opérations élementaires (isset, is_null, ==false,…), voici les tableaux de corrrespondance de tous les tests.

Bon courage

Objet PHP : attention au __destruct

Dans la bible des erreurs à éviter car elles peuvent prendre la tête : la fonction __destruct sur un objet PHP.

Il faut être trés vigilent, en effet, cette fonction est appellé même après un exit, donc on peut avoir un état en base de donnée juste avant exit qu’on vient de verifier par un dump.

Et se retrouver après exit  avec un état différent, effectivement la fonction exit appelle tous les destructeurs des objets en mémoire.

Youtube… en savoir plus

Depuis hier, vous avez commencer à mettre en place votre site de vidéo en ligne. Tout marche à la perfection mais avez-vous pensé à tout ? je ne sais pas…La référence en la matière est Youtube

Pour en savoir plus, sur l’architecture de Youtube, je vous propose de lire cet article High Scalability Youtube. Il donne un aperçu de l’architecture de ce site.

Il est important de penser dès le début à la montée en charge (redondance et multi-serveur). Il faut se poser les bonnes questions :

  • Ou est la limite de mon application ?
  • Quand mon serveur sera à saturation, comment inclure un deuxième serveur ?

Il vaut mieux avoir une idée dès le début sur ce genre de question, sinon il faudra complétement repenser l’application pour la montée en charge…. Souvent le fait de changer le serveur pour un plus puissant ne sera une solution qu’à court terme….

Web 2.0 : Construire son propre site de video

Dans le web 2.0, il faut de l’ajax mais il faut aussi pouvoir concurrencer les Youtube et autres Dailymotion

Pour ca, je vous propose de mettre en place uniquement avec des outils Open Source, votre propre site de vidéo. Vous aurez besoin de quelques connaissances :

  • Linux (Debian)
  • Shell
  • LightHttpd
  • PHP

Tous les détails dans cet article

Aprés à vous de mettre en place sur votre site Web.

Il vous restera plusieurs petites choses techniques à gérer :

  • Le formulaire d’upload, 3 pistes :
    1. Un formulaire classique
    2. Utilisation de JUploadr (Applet Java)
    3. Utilisation de la barre progressive PECL
  • La gestion du volume de vidéo (espace disque)

Ajax / PHP : Trucs et Astuces #1

Le tips le plus important est de trouver le bon framework, personnellement j’utilise principalement Prototype.

Un exemple tout simple pour mettre a jour un div par le contenu d’un page php

  1.  
  2. /*
  3. fonction qui permet de charger le html renvoyé
  4. par /ajaxdiv/contenu.php?isajax=1
  5. dans le div page_contenu
  6. */
  7. function litContenu()
  8. {
  9.   //parametre pour la page
  10.   var pars = 'isajax=1';
  11.   //object utilisé pour la mise à jour
  12.   var myAjax = new Ajax.Updater(
  13.     //identifiant du div à mettre à jour
  14.     'page_contenu',
  15.     //url
  16.     '/ajaxdiv/contenu.php',
  17.     {
  18.       parameters: pars,
  19.       method: 'get',
  20.     });
  21. }
  22.  

MySQL : On Duplicate Key UPDATE

Une problématique régulière sur un site consiste à mettre a jour des données. Parfois la donnée existe déjà et parfois elle n’existe pas.

Vous pouvez utiliser REPLACE mais le REPLACE est simplement un DELETE suivi d’un INSERT.

Exemple :

Je recois régulièrement les données d’une station météo. Parfois je recois la température, d’autre fois je recois l’humidité…si j’utilise REPLACE quand je mets à jour la température, je vais perdre l’humidité de la station X (X etant ma clé primaire, ma table comporte une ligne par station)

Deux méthodes sont possible :

  1. Je fais un SELECT pour savoir si la station a déjà des données et ensuite je fais soit un INSERT soir un UPDATE.
  2. J’utilise ON DUPLICATE KEY : INSERT INTO donnee_station SET temperature=15, station=’Nancy’ ON DUPLICATE KEY UPDATE temperature=15;

L’avantage de la deuxième méthode : cela réduit le code et je ne fais qu’une requete (meme si au niveau du serveur il en execute 2 :il essaye de faire INSERT si il recoit l’erreur Duplicate key Entry il fait UPDATE)

En résumé c’est plus facile est plus propre.

References:

Loogaroo : le retour de Manucorp

Depuis quelques temps, je pense à faire mon retour pour mettre un peu de piment dans le monde du PHP et du web 2.0 (coté technique). Il y a profusion de blog sur le web 2.0 (la blogosphere, les réseaux sociaux, les mashups,…) mais on aborde assez peu l’aspect technique (Comment ca marche, montée en charge, logiciels utilisées, plateforme,…)

Vous allez peut être penser « Encore un bloggueur de plus » mais non ca fait très longtemps que je bloggue mais avant cela ne s’appellait pas comme ca la preuve en image avec ce lien de janvier 2002 sur l’archive du web.

Donc on abordera les grandes lignes du web 2.0 mais surtout les aspects techniques et les petits trucs et astuces pour faire du web 2.0 soi même.

La dernière petite question : « Pourquoi Loogaroo ? »

C’est simple à l’époque du Web 1.0 le double O était en vogue (Google, Yahoo,…) maintenant comme nous sommes passés au Web 2.0, j’ai voulu mettre deux double O et donc Loogaroo est née.



Check out our best movie collection. Latest CD, DVD, HQ DVD movie downloads. Buy and download movies instantly.