Home
Accueil
Downloads
Téléchargements
Forums
Forums
Your Account
Votre compte
Menu
· Accueil ·

· Communication ·
  · Forums
  · Messages privés
  · Contactez nous
  · Recommendez nous
  · Sondages
  · Les projets

· Nouvelles ·Stats
  · Sujets
  · Ecrire un article
  · Articles archivés
  · Articles RSS
  · Lettre de sécurité
  · Archive de lettres

· Téléchargements ·
  · Accueil
  · Nouveautés
  · Mises à jour
  · Thêmes

· Outils ·
  · Outils divers
  · Convertisseur de temps
  · Table de caractères
  · Générateur de boutons
  · Compresseur Javascript

· Documentation ·
  · Wiki
  · Questions/Réponses
  · Documents
  · Manuel PHP-Nuke
  · Manuel PHP
  · Manuel PEAR
  · Encyclopédies

· Liens ·
  · Nos liens
  · Nos fluxs RSS
  · Partenaires
  · Votre publicité
  · Sitemap
  · Mes bannières

· Infos ·
  · Rechercher
  · Votre compte
  · Liste des membres
  · Carte des membres
  · Top

· Divers ·
  · Météo
  · Galeries
  · Statistiques Phpnuke
  · MS Analysis


Introduction

Introduction

Introduction -- Introduction à Cache_Lite

Description

PEAR::Cache_Lite est un petit système de cache. ll est optimisé pour les sites web à fort trafic, il est donc vraiment très rapide et sécurisé (car il utilise les verrous de fichiers et/ou des tests anti-corruptions).

Note : une documentation indépendante de Cache_Lite est disponible en chinois sur cette page.

Buts et détails techniques

Vitesse

Avant tout, PEAR::Cache_Lite est destiné à être très rapide. Ce qui rend l'utilisation de PEAR possible sur les sites à fort trafic sans tomber dans des solutions matérielles de hautes technicités.

Vous pouvez trouver plus de détails sur les choix techniques de Cache_lite sur ce document mais l'idée principale est d'inclure le fichier PEAR.php uniquement lorsqu'une erreur survient (extrèmement rare).

Simplicité

Parce que le système de cache est souvent inclus dans la couche applicative, le moteur PEAR::Cache_Lite doit être petit et flexible avec la licence LGPL. Les fonctions avancées peuvent être trouvées dans les fichiers qui étendent le moteur.

Sécurité

Sur les sites web à fort trafic, le système de cache doit être vraiment protégé contre les corruptions de fichiers (à cause des accès concurents en mode lecture/écriture). Vraiment très peu de systèmes de cache offrent une protection contre ce problème.

Un verrou de fichier n'est pas une solution parfaite, car il est inutile avec NFS ou avec des serveurs multitâches. Donc, en plus des verrous de fichiers, PEAR::Cache_Lite offre deux mécanismes totalement transparents (basés sur des clés de hashage) our garantir la sécurité des données en toutes circonstances. Consultez le lien donné dans le paragraphe précédent pour plus de détails.

Utilisation

Utilisation générale

Tous les modules de Cache_Lite suivent la même philosophie.

Les paramètres (autres que ceux par défaut) sont passés au constructeur en utilisant un tableau associatif.

Un fichier en cache est identifié par un identifiant de cache (et éventuellement un groupe). Pour des raisons évidentes de flexibilité, le choix de la logique concernant ces identifiants est laissé à la discrétion du développeur.

Dans ce qui suit, nous utiliserons le terme de "group" pour les fichiers en cache et le terme de "block" pour les pages HTML.

Partie principale

Commençons avec un exemple simple : la page est construite et récupérée dans une variable unique (chaîne de caractères) :
<?php

// Inclusion du paquet
require_once('Cache/Lite.php');

// D&eacute;finition d'un identifiant pour ce cache
$id = '123';

// D&eacute;finition de quelques options
$options = array(
    'cacheDir' => '/tmp/',
    'lifeTime' => 3600
);

// Cr&eacute;ation de l'objet Cache_Lite
$Cache_Lite = new Cache_Lite($options);

// Test si il y a un cache valide pour cette identifiant
if ($data = $Cache_Lite->get($id)) {

    // Cache disponible !
    // Le contenu est dans la variable $data
    // (...)

} else { // Aucun cache valide trouv&eacute; (vous devez faire la page)

    // Cache non disponible !
    // Mettez dans la variable $data les donn&eacute;es &agrave; mettre dans le cache
    // (...)
    $Cache_Lite->save($data);

}

?>

Si vous voulez utiliser un cache par bloc et non un cache global, examinez l'exemple suivant :
<?php
require_once('Cache/Lite.php');

$options = array(
    'cacheDir' => '/tmp/',
    'lifeTime' => 3600
);

// Cr&eacute;ation de l'objet Cache_Lite
$Cache_Lite = new Cache_Lite($options);

if ($data = $Cache_Lite->get('block1')) {
    echo($data);
} else {
    $data = 'Donn&eacute;es du block 1';
    $Cache_Lite->save($data);
}

echo '<br /><br />Ligne non mise en cache !<br /><br />';

if ($data = $Cache_Lite->get('block2')) {
    echo($data);
} else {
    $data = 'Donn&eacute;es du block 2';
    $Cache_Lite->save($data);
}

?>

Partie principale

Cependant, il n'est pas toujours possible de récupérer tout le contenu d'une page dans une seule variable. Dans ce cas, Cache_Lite_Output vient à votre secours :
<?php

require_once('Cache/Lite/Output.php');

$options = array(
    'cacheDir' => '/tmp/',
    'lifeTime' => 10
);

$cache = new Cache_Lite_Output($options);

if (!($cache->start('123'))) {
    // Cache manquant...
    for($i=0;$i<1000;$i++) { // fabrication de la page...
        echo '0123456789';
    }
    $cache->end();
}

?>

L'idée est la même que pour l'utilisation des blocs :
<?php

require_once('Cache/Lite/Output.php');

$options = array(
    'cacheDir' => '/tmp/',
    'lifeTime' => 10
);

$cache = new Cache_Lite_Output($options);

if (!($cache->start('block1'))) {
    // Cache manquant...
    echo 'Donn&eacute;es du block 1 !';
    $cache->end();
}

echo 'Ligne non mise en cache !';

if (!($cache->start('block2'))) {
    // Cache manquant...
    echo 'Donn&eacute;es du block 2 !';
    $cache->end();
}

?>

NOTE IMPORTANTE

Pour une efficacité maximale avec Cache_Lite, n'incluez pas systématiquement tout autre paquet nécessaire à votre page. Chargez UNIQUEMENT les modules dont vous avez besoin lorsque la page n'est pas dans le cache (et doit donc être re-parsée) en utilisant une inclusion conditionnelle.

Le mauvais chemin est :
<?php
   require_once("Cache/Lite.php");
   require_once("...")
   require_once("...")
   // (...)
   $cache = new Cache_Lite();
   if ($data = $Cache_Lite->get($id)) { // cache trouv&eacute; !
       echo($data);
   } else { // la page doit &ecirc;tre (re)construite dans $data
       // (...)
       $Cache_Lite->save($data);
   }
?>

Voici la meilleure façon (souvent, plus de deux fois plus rapide) :
<?php
   require_once("Cache/Lite.php");
   // (...)
   $cache = new Cache_Lite();
   if ($data = $Cache_Lite->get($id)) { // cache trouv&eacute; !
       echo($data);
   } else { // la page doit &ecirc;tre (re)construite dans $data
       require_once("...")
       require_once("...")
       // (...)
       $Cache_Lite->save($data);
   }
?>

Conclusion

Pour aller plus loin avec Cache_Lite, regardez les exemples et les détails techniques fournis avec ce paquet.


Manuel PEAR pour PHP-Nuke © www.stefvar.com
Syndiquez notre contenu RSS, Atom, etc..
PHP-Nuke © 2007Reproduction interdite sans autorisation de ma part www.stefvar.com Copyright © 2008Thème iCGstation
Site français de la communauté PragmaMx