septembre 2010

Rambo le fou #91388

Rambo le fou #91388
Votre notation : Aucun(e) Moyenne : 3 (1 vote)

Kart le sage #68985

Kart le sage #68985
Votre notation : Aucun(e) Moyenne : 2 (1 vote)

Ajouté le 30 septembre, 2010

Quicksand est un plugin jQuery permettant de réorganiser vos listes de données ou images, dynamiquement suivant certains critères et avec des effets bien ...

Lire la suite ]

Bob le ouf #94731

Bob le ouf #94731
Votre notation : Aucun(e) Moyenne : 2 (1 vote)

Ajouté le 29 septembre, 2010

Shared by bonvga secure et rapide Optez alors pour E-Z Fynd !!! Via @clem.hayer

Lire la suite ]

Ajouté le 28 septembre, 2010

Shared by bonvga need ! Cela faisait maintenant quelques semaines que l'on entendait parler de la sortie d'une tablette tactile fabriqué par RIM, c'est ...

Lire la suite ]

Ajouté le 28 septembre, 2010

Les chercheurs de l’Institute for Dynamic System and Control de l’ETH de Zurich ont réalisé une nouvelle vidéo mettant en oeuvre 3  drones quadrotors ...

Lire la suite ]

Ajouté le 28 septembre, 2010

Original, cet Aphelion, un concept de réveil propulsant une bille en même temps que son alarme se déclenche. Et comme vous pouvez vous l’imaginer, il ne ...

Lire la suite ]

Ajouté le 27 septembre, 2010

Aborder des sujets un peu légers des fois, ça détend les zygomatiques. Ça faisait un petit moment que je n’avais pas autant ri d’une vulnérabilité… bon ok ...

Lire la suite ]

Ajouté le 27 septembre, 2010

Si comme moi, vous avez fait vos premières armes sur ce formidable jeu qu’est Duke Nukem 3D, alors vous serez ravis d’apprendre l’existence d’EDUKE32, un ...

Lire la suite ]

Zeus le gros #37674

Zeus le gros #37674
Votre notation : Aucun(e) Moyenne : 2 (1 vote)

Paul la grimace #24110

Paul la grimace #24110
Votre notation : Aucun(e) Moyenne : 2 (1 vote)

Bill l'éventreur #15623

Bill l'éventreur #15623
Votre notation : Aucun(e) Moyenne : 2 (1 vote)

Hector l'alien #32091

Hector l'alien #32091
Votre notation : Aucun(e) Moyenne : 2 (1 vote)

Zeus le chacal #61089

Zeus le chacal #61089
Votre notation : Aucun(e) Moyenne : 2 (1 vote)

Ajouté le 21 septembre, 2010

Vous vous souvenez peut-être de cette pub Egyptienne pour la marque « Panda », dont on vous avez parlé y’a longtemps, ici. Voici une compilation de toutes ...

Lire la suite ]

Ajouté le 21 septembre, 2010

CarouFredSel est un carrousel configurable en JQuery pour faire défiler vos éléments HTML.

Lire la suite ]

Bob l'éxilé #77416

Bob l'éxilé #77416
Votre notation : Aucun(e) Moyenne : 5 (1 vote)

Ajouté le 15 septembre, 2010

Vous vous souvenez de la rencontre entre The Dude et Morpheus ? ici. Et bien voici la rencontre entre Princess Leia et Ace Ventura. Enjoy

Lire la suite ]

Ajouté le 15 septembre, 2010

John le fennec #15024

John le fennec #15024
Votre notation : Aucun(e) Moyenne : 2 (1 vote)

Bobby le cruel #60877

Bobby le cruel #60877
Votre notation : Aucun(e) Moyenne : 5 (1 vote)

Drupal : Use cookie-free domains

Soumis par bonvga le 11 septembre, 2010 | Laisser un commentaire (3)

Si vous utilisez les extensions Firefox Yslow ou encore Google Page Speed sur un site Drupal, vous constaterez que la directive "Use cookie-free domains" et très souvent au niveau F (c'est-à-dire le plus mauvais).

Tout d'abord, que signifie "Use cookie-free domains" ? L'idée consiste à limiter la transmission des cookies entre le client et le serveur au strict nécessaire. Pour cela, il faut forcer le serveur à poser les cookies sur un domaine et charger les éléments statiques de la page depuis une autre url.

Voici ce que remonte Yslow pour l'url http://www.bonvga.net/ sans cette optimisation :

drupal-cookie-free-domain-1-thumb.jpg

En effet, par défaut, Drupal va poser les cookies sur le domaine .bonvga.net. Notez bien la présence implicite du joker, le cookie est donc posé sur *.bonvga.net. Drupal va également fournir des chemins relatifs vers les fichiers statiques, de ce fait ils sont chargés sur le même domaine que la page et donc le client sera forcé de transmettre les cookies pour chacune des requêtes vers les fichiers statiques.

Voici ma méthode pour optimiser ce point. Il y a peut-être d'autres solutions. Pour résumer je vais forcer Drupal à :

  • poser les cookies sur le domaine www.bonvga.net
  • réécrire les urls des éléments statiques vers le domaine static.bonvga.net

1 - Poser les cookies sur www.bonvga.net

Pour forcer le serveur à poser les cookies sur un domaine, il suffit de spécifier la variable $cookie_domain dans le fichier settings.php du site :

/**
 * Drupal automatically generates a unique session cookie name for each site
 * based on on its full domain name. If you have multiple domains pointing at
 * the same Drupal site, you can either redirect them all to a single domain
 * (see comment in .htaccess), or uncomment the line below and specify their
 * shared base domain. Doing so assures that users remain logged in as they
 * cross between your various domains.
 */

$cookie_domain = 'www.bonvga.net';

2 - Réécrire les urls des éléments statiques

Ça parait simple comme ça, mais en fait il va falloir entrer dans les méandres de Drupal et créer un module qui aura cette mission. Je vais détailler la mise en oeuvre du module en 5 étapes :

  • création du module
  • changement de l'ordonnancement du module pour être exécuté en dernier
  • capture de l'intégralité de la page
  • détection des liens à changer
  • fonction de réécriture

2.1 - La création du module

Créer un répertoire pour le module dans 'sites/all/modules'. Pour cet exemple, le module s'appellera 'optimcookie'. Commençons par créer le fichier optimcookie.info pour que Drupal trouve le module.

name = Cookie-free domains
description = "Cookie-free domains"
package = bonvga
core = 6.x
version = 6.x-1.0-dev

2.2 - Changement de l'ordonnancement du module

Le module va travailler sur la page générée par Drupal, il faut donc spécifier que ce module doit s'exécuter en dernier parmi les autres modules de Drupal. Pour cela, je vais utiliser le hook_install et modifier le poids du module dans un fichier nommé optimcookie.install. Le hook_install sera invoqué par Drupal une seule fois lors de l'installation du module.

<?php

function optimcookie_install() {
  db_query("UPDATE {system} SET weight = 126 WHERE name = 'optimcookie' AND type = 'module'");
}

Notez que le poids attribué au module est 126 alors que le poids maximum est 127. Ainsi, je laisse la possibilité à d'autres modules de s'exécuter vraiment en dernier, ce qui est le cas pour le module Javascript Aggregator par exemple.

2.3 - Capture de l'intégralité de la page

Maintenant, il faut créer le fichier du module en le nommant optimcookie.module. Pour capturer la page, je vais utiliser le hook_init et le hook_exit chacun s'exécutant respectivement au début et à la fin de la construction de la page. Pour intercepter le contenu de la page, je vais utiliser les fonctions d'output buffering de php. Le module sera rendu inactif sur toute la zone d'administration du site.

<?php

function optimcookie_init() {
  if (arg(0)!='admin') {
    ob_start();
  }
}

function optimcookie_exit() {
  if (arg(0)!='admin') {
    $buffer = ob_get_clean();

    // réécriture des urls

    echo $buffer;
    if (variable_get('cache', CACHE_DISABLED) != CACHE_DISABLED) {
      page_set_cache();
    }
  }
}

À ce stade, si vous lancez le module, il ne va rien se passer. Il manque encore le code pour réécrire les urls.

2.4 - Détection des liens à changer

Le code ci-dessous est à placer juste après le commentaire 'réécriture des urls'. Les expressions régulières vont intercepter les liens à réécrire et passer les informations à une callback nommée optimcookie_rewrite_url. Dans cet exemple, j'intercepte l'url du favicon, les urls des fichiers javascript, les urls des feuilles de style et les urls des images.

    // réécriture des urls
    $buffer = preg_replace_callback(
      "/<(link([^>]*)rel=\"shortcut icon\")([^>]*)(href=)[\"\']?([^\"\']+)[\"\']?([^>]*)>/",
        "_optimcookie_rewrite_url",
        $buffer
    );    
    $buffer = preg_replace_callback(
      "/<(script([^>]*)type=\"text\/javascript\")([^>]*)(src=)[\"\']?([^\"\']+)[\"\']?([^>]*)>/",
        "_optimcookie_rewrite_url",
        $buffer
    );    
    $buffer = preg_replace_callback(
      "/<(link([^>]*)type=\"text\/css\")([^>]*)(href=)[\"\']?([^\"\']+)[\"\']?([^>]*)>/",
        "_optimcookie_rewrite_url",
        $buffer
    );    
    $buffer = preg_replace_callback(
      "/<(img(([^>]*)))(src=)[\"\']?([^\"\']+)[\"\']?([^>]*)>/",
        "_optimcookie_rewrite_url",
        $buffer
    );

Notez qu'ici, toutes les urls sont interceptées et passées à la callback. Les urls absolues ne devront pas être réécrites donc il faudra faire le tri dans la callback.

2.5 - Fonction de réécriture

La fonction de réécriture est en charge de :

  • transformer les urls absolues du domaine courant en urls relatives
  • puis, transformer les urls relatives en urls absolues vers un domaine autre que www.bonvga.net, par exemple static.bonvga.net.

function _optimcookie_rewrite_url($match) {
  // à adapter en fonction du domaine !

  // ici, on transforme les urls du domaine courant en url relative
  $match[5] = preg_replace('/^http:\/\/(www|dev).bonvga.net/', '', $match[5]);

  // on réécrit uniquement les urls relatives
  if (!preg_match('/^http/', $match[5])) {
    $match[5] = 'http://static.bonvga.net/'.$match[5];
  }

  return "<".$match[1].$match[3].$match[4]."\"".$match[5]."\"".$match[6].">";
}

Voilà, le module est prêt, il n'y a plus qu'à tester.

4 - Analyse d'Yslow après avoir activé le module

drupal-cookie-free-domain-2-thumb.jpg

Houra ! Nous voici au niveau A ! Wink

Sachez qu'il est possible d'aller plus loin, avec la fonction _optimcookie_rewrite_url, avec quelques lignes supplémentaires il est possible de "paralléliser les requêtes" HTTP sur plusieurs domaines.

J'espère avoir été clair et que cette méthode pourra vous servir.

Posté dans les catégories , , , , et | Laisser un commentaire (3)

Kart le sanglant #89265

Kart le sanglant #89265
Votre notation : Aucun(e) Moyenne : 4 (1 vote)

Ajouté le 10 septembre, 2010

Submitted by: Unknown

Lire la suite ]

Ajouté le 10 septembre, 2010

imgAreaSelect est un plugin jQuery permettant de recadrer vos images en sélectionnant vous même la zone de crop.

Lire la suite ]

Ajouté le 9 septembre, 2010

Shared by bonvga Hummmmmm Le fromage qui porte le nom d'un sommet jurassien (1461 m) fait son retour le 10 septembre. Ce fromage saisonnier de montagne ...

Lire la suite ]

Ajouté le 9 septembre, 2010

Pour ceux qui aimeraient voir à quoi ressemblera la prochaine mouture de Firefox, il est désormais possible de télécharger la bêta 5. Cette version propose ...

Lire la suite ]

spotify

spotify
Votre notation : Aucun(e) Moyenne : 2 (1 vote)

Ajouté le 8 septembre, 2010

Voici un applet sympathique permettant d’enregistrer tout ce que vous entendez sur votre ordinateur, y compris les musiques que vous écoutez ou bandes sons ...

Lire la suite ]

Ajouté le 8 septembre, 2010

Si vous n’avez vu ni Matrix, ni The Big Lebowski, vous ne comprendrez rien. Pour les autres, je vous dis enjoy.

Lire la suite ]

Ajouté le 4 septembre, 2010

Changement de registrar

Soumis par bonvga le 3 septembre, 2010 | Laisser un commentaire (2)

Une page se tourne pour bonvga.net. Pour la gestion du nom de domaine bonvga.net, j'ai décidé de basculer chez gandi alors qu'il était chez amen depuis 2003.

Les 3 points négatifs chez amen qui m'ont motivé à changer :

  • Des promos pas intéressantes
  • Un espace perso démodé
  • Les tarifs élevés

Je sais qu'il y a mieux que gandi pour les tarifs. Si vous avez de bonnes occasions, n'hésitez pas à les partager en laissant un commentaire. Wink

Posté dans les catégories , et | Laisser un commentaire (2)

Ajouté le 3 septembre, 2010

Ajouté le 3 septembre, 2010

Ajouté le 2 septembre, 2010

Shared by bonvga c'est du fat !! Voici une pub interactive pour Tipex. L’idée est vraiment cool, je vous laisse découvrir ça par vous même. CLIQUEZ ICI

Lire la suite ]

Ajouté le 2 septembre, 2010

Shared by bonvga De toute façon, les chats, c'est rien que des branleurs."C'était un comuniqué du CCC, le Comité Contre les Chats" Un chaton de 3 mois ...

Lire la suite ]

Ken l'éxilé #83988

Ken l'éxilé #83988
Votre notation : Aucun(e) Moyenne : 2 (1 vote)