29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
17-02-2012 : Pétition pour une protection de l’apiculture et des consommateurs face au lobby des OGM
Logo de mon site
Logo de mon site
Faire un don




Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox
zero papier grâce aux catalogues et promos en ligne de bonial

Solution and Implementation -- Solution et implémentation

Date de publication: le mercredi 8 avril 2009 à 19h58
Dernière modification: par Pascal BOYER le mardi 5 octobre 2010 à 16h33
» Article suivant: Results - Résultats

30/03/2009 11:19  

Solution

Instead of letting these queued clients wait until the new version of the cache is ready ( and stress the servers ), why wouldn't we show them the former version of the cache ? This case would not happen very often, and who would be the most unsatisfied client : the one waiting 20s for a page to be displayed, or the one seeing a former version version of it once or twice, and the updated version a few seconds later ? Well, that is a trade-off between user experience and content freshness, and going for the solution where user experience is maximised, and content freshness gracefully degraded, sounded like the way to go. 
Plutôt que de faire attendre les clients placés en file d'attente jusqu'à ce que la nouvelle version cachée soit prête (ce qui contribue également à stresser les serveurs), pourquoi ne leurs montrerions-nous pas l'ancienne version de ce cache ? Ce cas ne devrait pas se présenter si souvent et, par ailleurs, quel serait le client le plus insatisfait: celui qui attend 20 secondes que la page s'affiche ou bien celui qui voit une ou deux fois l'ancienne version cachée et la nouvelle version quelques secondes plus tard ? Il s'agit donc d'un compromis à faire entre l'expérience utilisateur et la fraîcheur du contenu: choisir l'option dans laquelle l'expérience utilisateur est maximisée et la fraîcheur du contenu légèrement dégradée nous semble adéquate en tous points.

That is what “Stale Cache” is all about. It brings a much smarter cache-handling, significantly improving the overall performance of a website, both being user-centric and system-friendly. 
Voilà ce qu'est le Stale Cache (le cache obsolète). Il permet une gestion du cache plus intelligente, améliore largement l'ensemble des performances d'un site web en étant à la fois soucieux de l'utilisateur final et soulageant considérablement le système.

Implementation / Implémentation

Let's dig into the implementation details of Stale Cache....WARNING : Jargon alert :) 
Below is presented the state machine of the Stale Cache feature. As “an image is worth thousand words”, we made this diagram as self-explanatory as possible. 
Entrons à présent dans les détails de l'implémentation du système de Stale Cache... ATTENTION: alerte jargon :-)
Est présentée ci-dessous la machine à états de la fonctionnalité Stale Cache. Et puisqu'une image vaut mieux que mille mots, nous avons réalisé un diagramme aussi explicite que possible.

 

   

Cliquez sur l'image pour l'afficher dans sa taille réelle

Note that this behaviour is natively embedded in the eZDB cluster file handler, meaning that any clustered eZ Publish instance directly benefits from Stale Cache. However, due to a PHP limitation on Windows, concerning the touch() function ( http://www.php.net/touch ), Stale Cache is not enabled by default on the non-clustered eZ Publish instances. If you are not running Windows, or if you upgraded to PHP 5.3 at least and are running Windows, it is strongly recommended to enable Stale Cache. It is shipped in an alternative to the eZFS file handler, called eZFS2, which can be enabled through the following process : 
Retenez que ce comportement est nativement inclus au gestionnaire de fichier eZDB, ce qui signifie que n'importe quelle instance clusterisée de eZ Publish bénéficie directement du système Stale Cache. Cependant, en raison de limitations PHP de la fonction touch() ( http://www.php.net/touch ) sur les plates-formes windows, ce système n'est pas inclus par défaut dans les instances non clusterisées de eZ Publish. Si vous n'utilisez actuellement pas windows ou bien si vous avez procédé à une mise à jour vers une version 5.3 ou supérieure de PHP tout en utilisant windows, il est alors fortement recommandé d'activer le Stale Cache. Ce dernier, livré comme alternative au gestionnaire de fichiers eZFS, se nomme eZFS2 et peut être activé de la manière suivante:

  1. Edit an override of file.ini ( called file.ini.append.php ). 
    Éditez une surcharge du fichier file.ini (nommée file.ini.append.php).
     
  2. Under the configuration block called '[ClusteringSettings]', set the value of the 'FileHandler' directive to 'eZFS2FileHandler'. In the end, your file.ini.append.php might look like this : 
    Sous la section [ClusteringSettings], positionnez la valeur de la directive FileHandler à eZFS2FileHandler pour que votre fichier ressemble au final à ceci:
<?php /* #?ini charset="utf-8"?
 
 [ClusteringSettings]
 FileHandler=eZFS2FileHandler
 
 */ ?>

Clear caches, and there you go...check the ' Results' section if you still are not convinced ! 
Supprimez les caches et voilà... Lisez la suite de l'article ( Results -- Résutats ) si vous n'êtes toujours pas convaincus !

Commentaires