gestion de cache réparti sur plusieurs répertoires pour limiter le nb de fichier

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


oli004
WRInaute passionné
WRInaute passionné
 
Messages: 2173
Inscription: 5 Jan 2005

gestion de cache réparti sur plusieurs répertoires pour limi

Message le Mer Jan 21, 2009 12:39

Bonjour tout le monde,

La gestion de fichier en cache est très utile pour limiter les ressources machine, et augmenter le temps d'affichage de page.
Certes l'inconvenient qui en résulte est une augmentation de l'espace de stockage puisque chaque page mise en cache est en quelques sorte le moyen de créer des pages statiques à partir d'une seule page dynamique. (l'excellent article de fandecine explique le principe et propose même un script très fonctionnel)

Pour ma part, sur un de mes sites, le temps d'affichage à été concidérablement réduit dès lors que j'ai géré la mise en cache sur mon serveur des pages dynamiques.

Néanmoins, n'y a-t-il pas de limite, ou de gros inconvenient à ce que toutes ces pages soient stoquées dans un seul et même dossier.

En l'occurence, j'ai pour le moment un peu plus de 5000 fichiers dans un répertoire cache, et lorsque je veux fouiner dedans, dia ftp par exemple, il arrive que le temps de réponse trop long pour afficher l'intégralité des fichiers fasse passer la liaison en sécurité pour time out.

D'où ma question peut-on générer des pages dans divers repertoires de façon automatique. Par exemple lorsque le nb de page atteint 1000 dans un dossier ?


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Mer Jan 21, 2009 14:04

Tu peux avoir un système de cahe qui cache dans des répertoires aussi. Ca dépend de ton système donc.
Tu utilises quoi?


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Mer Jan 21, 2009 14:04

sur mon www le cache reprend l'arborescence des catégories. Ca m'évite ce genre de soucis.


oli004
WRInaute passionné
WRInaute passionné
 
Messages: 2173
Inscription: 5 Jan 2005

Message le Mer Jan 21, 2009 16:33

Bacteries a écrit:Tu peux avoir un système de cahe qui cache dans des répertoires aussi. Ca dépend de ton système donc.
Tu utilises quoi?


j'utilise le principe de fandecine :

Code: Tout sélectionner
<?php
$urldemandee=$_SERVER['REQUEST_URI']; //on lit l'adresse de la page
$urldemandee=ereg_replace('/','-',$urldemandee); // on tranforme l'adresse en nom de fichier
if($urldemandee=="-") $urldemandee="-index.html"; // si l'adresse est la racine du site, on ajoute index.html
$fichierCache="cache/cache".$urldemandee; // on construit le chemin du fichier cache de la page
if (@filemtime($fichierCache)<time()-(3600*24*360)) { //si la page n'existe pas dans le cache ou si elle a expiré
   ob_start(); // on démarre la bufferisation de la page: rien de ce qui suit n'est envoyé au navigateur
   
?>


blabla

<?php
}


   $contenuCache = ob_get_contents(); // on recuperre le contenu du buffer
   ob_end_flush();// on termine la bufferisation
   $fd = fopen("$fichierCache", "w"); // on ouvre le fichier cache
   if ($fd) {
      fwrite($fd,$contenuCache); // on ecrit le contenu du buffer dans le fichier cache
      fclose($fd);
     }
} else { // le fichier cache existe déjà
  include ($fichierCache); // on le copie ici
}
?>



Mes urls sont de la forme -http://ndd/page-1.html, -http://ndd/page-2.html, -http://ndd/page-n.html

mes fichiers en cache sont donc de la forme cache-page-n.html

Comment procéder par que les pages soient mises en cache dans divers répertoires dès que le nombre de fichiers en cache atteint 1000 ainsi :
/cache/a/cache-page-1.html à cache-page-1000.html puis
/cache/b/cache-page-1001.html à cache-page-2000.html etc .


oli004
WRInaute passionné
WRInaute passionné
 
Messages: 2173
Inscription: 5 Jan 2005

Message le Mer Jan 21, 2009 16:45

J'ajoute que je ne suis pas figé à une solution de 1000 fichiers. Ce peut par exemple générér un répertoire de cache chaque mois de l'année par exemple


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Mer Jan 21, 2009 17:52

tu peux faire une fonction qui détermine un répertoire de cache en fonction du numéro extrait avec une petite regex
une division du numéro par 1000 permet de déterminer le numéro de répertoire


oli004
WRInaute passionné
WRInaute passionné
 
Messages: 2173
Inscription: 5 Jan 2005

Message le Mer Jan 21, 2009 22:20

tu peux faire une fonction qui détermine un répertoire de cache en fonction du numéro extrait avec une petite regex une division du numéro par 1000 permet de déterminer le numéro de répertoire

C'est effectivement une solution que j'avais envisagée car c'est assez facile de manipuler des chiffres, d'où mon orientation première pour un répertoire tous les 1000 fichiers.

Merci, je vais tester cette solution


oli004
WRInaute passionné
WRInaute passionné
 
Messages: 2173
Inscription: 5 Jan 2005

Re: gestion de cache réparti sur plusieurs répertoires pour limi

Message le Dim Fév 01, 2009 23:21

Après quelques essais, la solution fonctionne parfaitement. Je note même un gain de temps à l'affichage.


VisitezMonSite
WRInaute passionné
WRInaute passionné
 
Messages: 1147
Inscription: 7 Mai 2009

Re: gestion de cache réparti sur plusieurs répertoires pour limiter le nb de fichier

Message le Dim Oct 11, 2009 15:29

Pour info au lecteurs d'aujourd'hui ou de demain, il y a une solution basée sur répertoires ici:
http://forum.webrankinfo.com/mise-cache-php-version-complete-t111852.html


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités