Officiel

Une petite présentation du stockage côté navigateur

Lorsqu'un message est envoyé à un ami à l'aide du messager web, il passe d'un navigateur à l'autre sans être stocké sur nos serveurs. Plus exactement, il ne reste que quelques secondes en mémoire sur nos serveurs, juste le temps que le destinataire le récupère.
Dans ces conditions, comment ce message et les précédents de la conversation peuvent-ils s'afficher quand vous le demandez ?
De même, l'affichage de la barre du messager (barre dépliée, repliée, onglets ouverts, type de défilement) reste cohérent d'une page à l'autre. Pourtant ceci n'est stocké nulle part sur nos serveurs.
Même avec énormément d'utilisateurs, très peu de données et de traitements sont nécessaires côté serveur pour le bon fonctionnement du messager.

Le messager s'appuie en effet sur une fonction très pratique que l'on retrouve sur les navigateurs web courants, mais qui est pourtant très peu utilisée : le stockage local.

Internet Explorer : possible depuis IE 5.0 (1999), à l'aide de la propriété “userData”. IE 8 y ajoute les interfaces “globalStorage” et “sessionStorage”.

Firefox : possible depuis Firefox 2.0 (2006) à l'aide de “globalStorage” et “sessionStorage”.

Safari (Webkit) : possible depuis 2007 avec l'interface “localStorage” ainsi qu'une interface SQL complète et conforme aux derniers travaux concernant les spécifications HTML 5.

Notons que l'installation de Google Gears offre aussi la possibilité d'accéder à une base SQL locale, mais avec une interface spécifique.

Il ne fait aucun doute que Google Chrome héritera de ces fonctions lorsqu'il se basera sur une version plus récente Webkit.

Pour les navigateurs tels qu'Opera qui n'ont encore aucune fonction de stockage local, il reste une échappatoire : la machine virtuelle Flash, qui propose ceci depuis Flash 6 (2002).

Quelques bidouilles existent par ailleurs, telles que celles qui consistent à utiliser l'historique du navigateur, mais il est beaucoup plus fiable de se limiter à ce qui a été explicitement conçu pour cet usage.

C'est au premier abord un peu décourageant de voir que les interfaces diffèrent beaucoup d'un navigateur à l'autre. Mais le jeu en vaut la chandelle et sachant que les spécifications HTML 5 détaillent ce point, on peut raisonnablement espérer que les choses deviennent rapidement plus simples et plus homogènes.

Mais au fait, qu'est-ce-que ce fameux “stockage local” ?

On peut le comparer aux cookies : il associe du contenu à des clefs et l'ensemble est stocké par le navigateur, sur la machine cliente. Les cookies accusent malgré tout un âge certain. L'interface pour y accéder (en Javascript) est old school, ils ne permettent pas de mémoriser grand chose (“4 Ko should be enough for anybody”) et ils sont systématiquement transmis au serveur web à chaque requête sur la même zone. Le stockage local gomme tous ces défauts et y ajoute des raffinements bien utiles.

Pour notre messager, toutes les opérations liées au stockage local passent par un petit objet qui offre une interface commune pour différentes méthodes (localStorage, globalStorage, userData et Flash). Vous pouvez le trouver ici : persistent-storage.js et le code source du Flash qui est utilisé à défaut de fonction native se trouve ici : Flashare.hx

Voici un très simple exemple d'utilisation :

(function() {

var key = "key";
var storage;

function after_storage_is_ready() {
var previous_value = storage.get(key);

if (!previous_value) {
console.log("Aucune valeur precedente");
previous_value = "x";
} else {
console.log(previous_value);
}
storage.set(key, previous_value + "x");
}

storage = PersistentStorage.init();
PersistentStorage.wait_until_ready(after_storage_is_ready);

})();


À noter que les données stockées ne sont accessibles que depuis la même origine (sous-domaine / domaine / port). Ainsi la clef “key” de ce script chargé à partir d'une page de “www.skyrock.com” serait totalement distincte d'une clef nommée “key” chargée à partir d'une page de “devteam.skyrock.com” ou même de “skyrock.com” tout court.

Pour contourner ce problème, le messager crée une “IFRAME” invisible dont le contenu provient toujours de la même URL : http://skyrock.com/sm/proxy.html

C'est cet élément qui va effectuer les opérations de stockage local. Les données sont ainsi toujours associées à l'origine “skyrock.com” et sont donc communes à toutes les pages sur lesquelles l'utilisateur peut se trouver.

Faire communiquer le Javascript d'une page avec celui d'une page d'une autre origine (ex: www.skyrock.com et devteam.skyrock.com) nécessite quelques autres précautions qui, si vous le souhaitez, seront détaillées dans un autre article.

# Posté le samedi 13 décembre 2008 10:47

Le nombre d'articles par page

Une petite amélioration que vous étiez nombreux à demander : la possibilité de choisir le nombre d'articles présentés sur chaque page de blog. C'est désormais en place et ça se passe dans l'onglet "configurer" dans la partie gestion de votre blog.

De nombreuses améliorations ont aussi été apportées à l'interface du poker (en passant, bravo à tous ceux qui l'ont découvert la semaine dernière).

Pour finir, nous ne vous dirons pas qu'il y a un nouvel habillage (secret...), une nouvelle fonction dans le messager (secrète...), que des corrections de bogues que vous nous aviez signalés ont été effectuées et que le skate peut être un sport dangereux.
Le nombre d'articles par page

# Posté le samedi 13 décembre 2008 06:15

Modifié le samedi 13 décembre 2008 06:57

Le jeudi, c'est... Skyrock.

Le jeudi, c'est... Skyrock.
Eh oui, aujourd'hui, une des nouvelles fonctions c'est la possibilité de mettre le son de Skyrock en widget sur ton blog ! Pour ça rends-toi dans ton admin et choisis le son de sky !

Attention ! Si tu n'es pas sur la version française, tu n'as pas la possibilité de choisir Skyrock directement via ton admin. Cependant, tu peux aller visiter un blog qui a ce widget, et choisir « Ajouter à mon blog », ça marchera ! ;)

# Posté le jeudi 11 décembre 2008 13:32

Modifié le jeudi 11 décembre 2008 18:43

Aujourd'hui, c'est P...

Une grosse nouveauté à fait son apparition aujourd'hui.

Vous ne l'avez pas encore trouvée ? Allez, en exclusivité pour les lecteurs de ce blog, voici un indice: ça débute par la lettre P, mais ce n'est pas une poutre.

Faites vos jeux !

(promis, ce n'est pas du bluff...)

Edit : On pense aussi à la nouvelle option du Chat permettant d'afficher votre avatar et activer les boutons vers votre blog et profil, en privé, si vous avez choisi de vous connecter avec un pseudo différent de celui de votre compte ;)

# Posté le vendredi 05 décembre 2008 11:16

Modifié le dimanche 07 décembre 2008 17:16

Work in progress...

C'est jeudi vendredi samedi, il fait bien frisquet, alors histoire de se réchauffer un peu voici enfin quelques petits nouvelles bien chaudes.

Cette semaine, de nombreuses optimisations et corrections de bogues ont été réalisées. Le genre de chose que vous ne voyez pas forcément, mais sur lequel on passe malgré tout énormément de temps pour que le site reste rapide et agréable à utiliser.

On finalise aussi plein de bonnes surprises que vous découvrirez dans les semaines qui viennent. Des petits malins ont déjà découverts quelques indices, mais il y a beaucoup d'autres choses dans les cartons. Pour l'instant on teste et on débogue... encore un peu de patience... c'est presque prêt...

Quelques améliorations ont aussi été apportées au messager : les listes de contacts peuvent être repliées, les contacts sont triés par ordre alphabétique, les alertes s'affichent plus rapidement, les fenêtres ne se referment plus si vous avez encore la souris dessus et les pages cassées ont en principe été réparées.

Bon week-end à tous, excellente reprise de la semaine et à jeudi bientôt !

# Posté le samedi 29 novembre 2008 09:05

Modifié le samedi 29 novembre 2008 09:22