begin process at 2012 02 15 20:48:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Tutoriaux

 > INTEGREZ UN SYSTEME DE CACHE PERFORMANT DANS VOS CONTENUS DYNAMIQUES

INTEGREZ UN SYSTEME DE CACHE PERFORMANT DANS VOS CONTENUS DYNAMIQUES


 Information sur la source

Note :
7,83 / 10 - par 6 personnes
7,83 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Tutoriaux Classé sous :cache, buffer, flush, système, page Niveau :Expert Date de création :18/08/2005 Date de mise à jour :19/08/2005 16:38:53 Vu / téléchargé :10 951 / 472

Auteur : aKheNathOn

Ecrire un message privé
Site perso
Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note

 Description

Je vais vous présenter ici comment intégrer mon systéme de cache dans vos codes ceci afin de diminuer considérablement le temps d'execution de vos scripts PHP.

Avant de commencer je voudrais mettre au point quelques notions :

1 - Le cache server != cache utilisateur :
Même si le cache à pour but d'augmenter la rapidité d'affichage, il ne faut pas confondre ces deux types de caches car chacun agit différement.
En effet, le cache utilisateur (comme le cache d'internet explorer par exemple) augmente la vitesse de communication en diminuant le transit d'informations. C'est pour cela qu'il pré-enregistre les images et toutes les ressources définies dans les pages, afin qu'il ne les actualise pas lors d'un second accés.
Le cache serveur lui va augmenter cette vitesse en envoyant plus rapidement les pages demandées.
On peut donc constater que les deux caches agissent sur des parties différentes :
Serveur : Composition rapide des ressources HTML
Client : Stockage des ressources externes au fichier HTML

2 - Les cache VS dynamisme :
Le cache server va à l'encontre des sites dynamiques. En effet, une page mise en cache et ressortie périodiquement ne semble pas être dynamique. Il faut donc évaluer le taux de dynamicité des pages mises en cache.

Vous avez par exemple un site qui gére des offres d'emploi :

--> La page d'accueil contient des news : mises à jour 1 fois par semaine
--> La page listant les offres : mises à jour plusieurs fois par jour

Vous avez donc deux méthodes pour mettre à jour le cache :

1 - Périodiquement pour les systémes à haute dynamicité
2 - Aprés une mise à jour pour les systémes à faible dynamicité

Je ne vais pas aller jusque là dans mon tutorial, je vous expliquerais seulement la methode de stockage et de ré-utilisation afin de faire un systéme de cache.

Je vais donc tout d'abord commencer ce tutorial par l'explication des différentes fonctions que j'utiliserais par la suite en exemple de code.

1) Les fonctions utilisées :
----------------------------

Pour avoir un systéme de cache, il faut avoir la source de la page. A premiére vue cela simple difficilement envisageable car du moment où on fait un echo "toto", apache l'envoie directement au client.
Il existe cependant des fonctions permettant de gérer le flux d'informations qui sont envoyées au clients :

* ob_start(callback[string]) :
Cette fonction va vous permettre d'intercepter le flux d'informations qui vont être envoyées à votre client. Elle va seulement laisser passer les entêtes et le contenu de la page sera envoyé que seulement quand vous le déciderez. Pour cela il faut indiquer dans le paramétre callback le nom de la fonction qui va intercepter le flux d'informations.

Exemple :

test.php
<?
function CallBackExemple($buffer) {
  $buffer = '-->Debut'.$buffer.'<--Fin';
  return $buffer;
}

ob_start('CallBackExemple');

for ($i=0; $i<100; $i++) echo 'ligne '.$i.'<br>';
header('Author: C. CHIRIAC');
?>

Cet exemple vous montre 3 choses :
1 - Pour lancer la 'bufferisation de sortie' vous utilisez la fonction ob_start en lui passant le nom de la fonction en argument
2 - La fonction de bufferisation recoit en argument une chaine contenant le code source de la page a envoyer. Vous pouvez modifier la source de la page, il transmettra au client le résultat de cette fonction seulement.
3 - Une fois la bufferisation activée vous pouvez envoyer des headers/cookies/lancer des sessions même si vous avez fait auparavant des print/echo

Pour plus de détails vous pouvez consulter la documentation technique de PHP à cette adresse :
http://fr3.php.net/manual/fr/function.ob-start.p hp

Je vous présenterais maintenant une seconde fonction interessante, celle vous permettant de gérer le moment ou vous souhaitez lancer la sortie de la page.

* ob_end_flush() : Envoie les données du buffer de sortie et éteint la bufferisation de sortie.

Exemple : (pris dans la doc)

  function change_title($new_title) {
   $output = ob_get_contents();
   ob_end_clean();

   $output = preg_replace("/<title>(.*?)<\/title>/", "<title>$new_title</title>", $output);
   echo $output;
  }

Example:
<?
  ob_start();
?>
<html>
<head>
<title>Mauvais titre ...</title>
</head>
<body>
Hello World
</body>
</html>
<?
  // ... some output
  change_title('NEW TITLE!');
?>
Pour plus de détails vous pouvez consulter la documentation technique de PHP à cette adresse :
http://fr3.php.net/manual/fr/function.ob-end-flu sh.php

/!\ BON A SAVOIR /!\
Le contenu de ce buffer peut être copié dans une chaîne avec la fonction ob_get_contents().
http://fr3.php.net/manual/fr/function.ob-get-cont ents.php

On va maintenant pouvoir rentrer dans le vif du sujet car si vous avez lu attentivement ce que j'ai expliqué au-dessus on connais tout ce qui est nécéssaire pour rédiger en PHP notre systéme de cache.

2) Le principe :
----------------

Le principe est simple :
On va actualiser périodiquement le cache, donc à chaque chargement de la page PHP on vérifie si le cache est obsolette, si c'est le cas on le met à jour, sinon en lui envoye le cache sans executer les fonctions de la page.

Organisation sous forme algorithmique :

1 - On vérifie le cache
-> Si le cache est à jour on l'envoye et on arréte l'execution
-> Sinon on continue

2 - Execution de vos scripts personnels, et rédaction de votre page html ...

3 - A la fin, on passe par la fonction de bufferisation qui met à jour le cache avec le contenu actuel de la page

En gros, c'est trés simple ...

Je vais donc vous proposer mon code ci-dessous :

Source

  • fichier cache.req.php
  • <?
  • // FONCTIONS DE GESTION DU CACHE
  • // --------------------------------------
  • // * Date de création : 18-Aou-2005 12:00 PM - C. CHIRIAC
  • // Historique des modifications :
  • // --------------------------------------
  • function StartCache() {
  • $GLOBALS['timeinit'] = microtime();
  • $cached_file = 'cache/'.md5($_SERVER['REQUEST_URI']);
  • $interval = time() - @filemtime($cached_file);
  • if (file_exists($cached_file) && ($interval < __CACHETIME__)) {
  • // ON ENVOI LE FICHIER DU CACHE
  • echo '<!-- STORED FROM CACHE -->';
  • readfile($cached_file);
  • $end = microtime();
  • $total = (integer)(($end - $GLOBALS['timeinit']) * 1000);
  • if ($total<0) $total = 0;
  • echo '<!-- EXECUTION TIME : '.$total.' -->';
  • die();
  • } else {
  • // ON LANCE LE SYSTEME DE CACHE
  • ob_start("CacheStream");
  • }
  • }
  • function EndCache() {
  • ob_end_flush();
  • clearstatcache();
  • }
  • function CacheStream($buffer) {
  • if (isset($GLOBALS['set_to_cache'])) {
  • // ENREGISTRE LE FICHIER DANS LE CACHE
  • $cached_file = 'cache/'.md5($_SERVER['REQUEST_URI']);
  • $f = fopen($cached_file, 'w+');
  • fputs($f, $buffer);
  • fclose($f);
  • }
  • // return fatal_error_handler($buffer); BUG TRACKER ;p
  • return $buffer;
  • }
  • ?>
  • fichier index.php (a appeller)
  • <?
  • define('__CACHETIME__', 600); // en secondes 600 = 10 min
  • require_once('cache.req.php');
  • StartCache();
  • if (!isset($_GET['page'])) $_GET['page'] = 'accueil';
  • include($_GET['page'].'.php');
  • EndCache();
  • ?>
  • fichiers d'exemple à mettre en cache :
  • accueil.php
  • <?
  • $GLOBALS['set_to_cache'] = true;
  • ?>
  • Bienvenue sur la page d'accueil
  • <br>
  • <a href="index.php?page=news">News</a>
  • news.php
  • <?
  • $GLOBALS['set_to_cache'] = true;
  • ?>
  • Bienvenue sur la page de news
  • <br>
  • <a href="index.php">Accueil</a>
  • /*
  • Explications finales :
  • Sur les deux pages de test vous pourrez constater que je demande au systéme de les mettre en cache
  • avec la commande qui suit :
  • $GLOBALS['set_to_cache'] = true;
  • Le systéme enregistre les fichiers dans le cache selon les noms des fichiers, et selon les variables GET envoyées.
  • Si ces pages sont différenciées par des requettes sous la forme de formulaires POST (formulaire de recherche dans la base
  • par exemple) il ne faut pas les mettre en cache.
  • Tous les critéres différenciateur qui ne sont pas à prendre en compte pour le contenu de la page sont :
  • - Les variables POST
  • - Les cookies
  • - les sessions
  • (car elles sont uniques à chaque client qui navigue le site donc le dynamisme doit être total)
  • Vous pouvez retrouver ces codes dans le zip joint à ce tutorial
  • */
fichier cache.req.php
<?
// FONCTIONS DE GESTION DU CACHE
// --------------------------------------
// * Date de création : 18-Aou-2005 12:00 PM - C. CHIRIAC
// Historique des modifications :
// --------------------------------------

function StartCache() {
	$GLOBALS['timeinit'] = microtime();
	
	$cached_file = 'cache/'.md5($_SERVER['REQUEST_URI']);
	$interval = time() - @filemtime($cached_file);
	if (file_exists($cached_file) && ($interval < __CACHETIME__)) {
		// ON ENVOI LE FICHIER DU CACHE
		echo '<!-- STORED FROM CACHE -->';
		readfile($cached_file);
		
		$end = microtime();
		$total = (integer)(($end - $GLOBALS['timeinit']) * 1000);
		if ($total<0) $total = 0;

		echo '<!-- EXECUTION TIME : '.$total.' -->';
		die();
	} else {
		// ON LANCE LE SYSTEME DE CACHE
		ob_start("CacheStream");
	}
}
function EndCache() {
	ob_end_flush();
	clearstatcache();	
}
function CacheStream($buffer) {
	if (isset($GLOBALS['set_to_cache'])) {
		// ENREGISTRE LE FICHIER DANS LE CACHE
		$cached_file = 'cache/'.md5($_SERVER['REQUEST_URI']);
		$f = fopen($cached_file, 'w+');
		fputs($f, $buffer);
		fclose($f);
	}
	// return fatal_error_handler($buffer); BUG TRACKER ;p
	return $buffer;
}
?>

fichier index.php (a appeller)
<?
	define('__CACHETIME__', 600); // en secondes 600 = 10 min
	require_once('cache.req.php');
	StartCache();
        if (!isset($_GET['page'])) $_GET['page'] = 'accueil';
	include($_GET['page'].'.php');
	EndCache();
?>

fichiers d'exemple à mettre en cache :
accueil.php
<?
	$GLOBALS['set_to_cache'] = true;
?>
Bienvenue sur la page d'accueil
<br>
<a href="index.php?page=news">News</a>

news.php
<?
	$GLOBALS['set_to_cache'] = true;
?>
Bienvenue sur la page de news
<br>
<a href="index.php">Accueil</a>

/*
Explications finales :

Sur les deux pages de test vous pourrez constater que je demande au systéme de les mettre en cache
avec la commande qui suit :
$GLOBALS['set_to_cache'] = true;

Le systéme enregistre les fichiers dans le cache selon les noms des fichiers, et selon les variables GET envoyées.
Si ces pages sont différenciées par des requettes sous la forme de formulaires POST (formulaire de recherche dans la base
par exemple) il ne faut pas les mettre en cache.

Tous les critéres différenciateur qui ne sont pas à prendre en compte pour le contenu de la page sont :
- Les variables POST
- Les cookies
- les sessions
(car elles sont uniques à chaque client qui navigue le site donc le dynamisme doit être total)

Vous pouvez retrouver ces codes dans le zip joint à ce tutorial
*/

 Conclusion

Le systéme permettant la gestion du cache est vraiment basique, et permet seulement une mise à jour temporelle. Si vous souhaitez rafraichir par exemple la page de news à partir d'une partie administration, juste aprés la création d'une news dans la base vous pouvez écrire ceci aprés votre requettage de création de l'article dans la base :

unlink(md5('cache/index.php?page=news'));

Cett e methode de mise à jour du cache aprés la mise à jour dans la base est la plus optimisée, il faudra alors enlever la gestion du temps.

Bonne prog à tous, akh

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

19 août 2005 16:38:53 :
Je viens de publier une classe compléte utilisant toutes les choses que j'ai expliqué et permettant de mettre en cache une partie des informations HTML du site. Vous pouvez vous rendre à cette adresse pour la consulter : http://www.phpcs.com/code.aspx?ID=33325

 Sources du même auteur

CLASSE WIKILOC
Source avec Zip OBSERVER PATTERN ORIENTÉ DÉVELOPPEMENT ÉVÉNEMENTIEL DÉCLARAT...
Source avec Zip SERVICE DESIGN PATTERN / CHARGEMENT DYNAMIQUE DE SERVICES D'...
Source avec Zip Source avec une capture WHOIS DOMAIN CLASS : LOOKUP & AVAIBILITY
Source avec Zip Source avec une capture XML MAPPING TO CLASS OBJECTS / CHARGEMENT / PARSING / MODIFI...

 Sources de la même categorie

Source avec une capture INTÉGRER À UNE BASE DE DONNÉES DES COORDONNÉES GÉOGRAPHIQUES... par slhuilli
Source avec Zip DÉCOMPOSER UN CODE PHP AVEC LA FONCTION INCLUDE par Julien39
CRÉATION D'UN SCRIPT D'AUTHENTIFICATION par phpAnonyme
Source avec Zip Source avec une capture N/X API: GOOGLE MAPS DEPUIS PHP VALID W3C par GillesWebmaster
PHP EXTRAIRE DES MAILS D'UN GROS FICHIER LOCAL OU DISTANT par cosmoswarezone1

 Sources en rapport avec celle ci

CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET par Dariumis
Source avec Zip SERCACHE2 > CACHE DE PAGES, D'OBJETS, DE REQUÊTES ... (NON T... par Astalavista
Source avec Zip [POO]SYSTÈME DE CACHE par destinyfr
Source avec Zip Source avec une capture CLASSE PHP POUR GERER LE CACHE par aKheNathOn

Commentaires et avis

Commentaire de Matthieu26 le 18/08/2005 23:53:24

Bravo aKheNathOn, car tu expliques de façon clair ta source... une fois encore, on est moins con tous les jours ;)

Commentaire de Anthomicro le 19/08/2005 00:35:14

Salut,

bof c'est gourmand ton système, on a pas forcément besoin de connaître la source de la page pour faire un système de cache (en tout cas pour mon système de cache je ne procède pas comme ça donc je parle en connaissance de cause). Je ne noterai pas car ton initiative est louable quand même vu qu'aucun tuto de ce type ne figure sur PHPCS. Pense à passer juste <? => <?php (ça me saute aux yeux lol)

Commentaire de Naixn le 19/08/2005 01:09:56

Anthomicro > Tu utilises quoi toi comme moyen pour mettre en cache ? Parceque c'est assez intéressant en fait :)

Commentaire de Naixn le 19/08/2005 01:11:00

J'oubliais : Merci aKheNathOn, même si je pense que tu aurais pû mettre ça en Class ( et ainsi éviter les GLOBALS ).
Mais sinon merci pour le principe :)

Commentaire de Anthomicro le 19/08/2005 01:15:22

Naixn > c'est assez compliqué vu que c'est intégré à mon site, il s'agit d'un fichier texte qui contient le résultat d'une requête mysql, mais très peu de code html, pas la page entière en fait, mai s simplement le texte contenu dans l'article, le titre, etc...

Commentaire de Naixn le 19/08/2005 01:24:28

Anthomicro > Ok. Et en gros tu regénère à chaque fois que tu changes dans la partie admin ? :)
Mais donc dans ce cas, tu n'utilises pas ob_start() ?

Commentaire de grandvizir le 19/08/2005 10:11:14

Il existait déjà un autre sujet :
http://www.phpcs.com/tutorial.aspx?ID=167

Commentaire de Anthomicro le 19/08/2005 10:40:06

" Anthomicro > Ok. Et en gros tu regénère à chaque fois que tu changes dans la partie admin ? :)"

Non, en fait lorsque le cache n'existe pas et qu'un membre consulte l'article bah je génère le cache, sinon j'utilise le cache. Et quand j'update dans ma partie admin je supprime le cache.

"Mais donc dans ce cas, tu n'utilises pas ob_start() ?"

Si mais pas pour le cache :-)

Commentaire de aKheNathOn le 19/08/2005 11:18:13

Anthomicro> Tout dépend de ce que tu entend par un autre systéme de cache. Je vais m'autocritiquer par rapport à ton systéme (je pense avoir saisit en partie ta technique).
Le désavantage entre mon systéme et le tient c'est que moi mettant en cache toute la page je ne peux pas avoir des pages contenant des informations génériques au site et à la base de données (exemple : liste d'articles de news) et des informations personelles à l'utilisateur (exemple: un menu utilisateur logué contenant ses infos personnelles).
L'avantage maintenant c'est qu'il est intégrable facilement sur n'importe quel site, et il n'execute aucune commande quand il doit lire le cache.

Exemple : J'ai un systéme qui lors d'une execution va prendre 60 ms pour s'executer. Une fois mis en cache il va prendre que 3 ms pour être lu. Ceci est indépendant des ressources mémoires qui auront servit à le mettre en cache (ça dépend en partie de la taille du fichier à charger).

Au niveau optimisation la fonction est rapide et offre une multitude de possibilités.

Concernant $GLOBALS['set_to_cache'], je suis obligé de passer par la car même si c'est une classe, elle se comporte comme toute variable, donc à une visibilité limitée dans certains cas. Si vous souhaitez qu'elle soit une classe, rien de plus simple, ajouttez dans le fichier cache.req.php :
class cache {
... les fonctions ...
}

Des mises à jours sont à envisager, permettant ainsi de mettre en cache que certaines parties HTML.

Dans ce tuto je vous explique seulement les bases, et je vous donne un exemple initial, qui reste bien-entendu à enrichir selon vos besoins.

Commentaire de Anthomicro le 19/08/2005 11:22:55

"je ne peux pas avoir des pages contenant des informations génériques au site et à la base de données"

plus loin :

"L'avantage maintenant c'est qu'il est intégrable facilement sur n'importe quel site"

Tu te contredis toi-même :-)

Par exemple pour mon site vu qu'il affiche le pseudo du membre en cours, je ne peux pas utiliser ton système. Si tu souhaites mettre à jour toute la source ça pas besoin de beaucoup de lignes de code :

<?php
ob_start();
if(file_exists('cache.machin'))
{
echo file_get_contens('cache.machin');
}
else
{
echo 'machin truc bidule contenu de la page';
$cache=ob_get_contents();
//inscrit ensuite le cache dans le fichier
$fp=fopen('fichier.machin','w+');
fputs($fp,$cache);
fclose($fp);
}
ob_end_flush();
?>

Commentaire de aKheNathOn le 19/08/2005 14:46:38

Non, je me contredis pas mais peut être que je m'explique mal. Tu as un site (ecommerce) dans lequel dans tu as une charte graphique contenant une zone détaillant le total du pannier dans n'importe quelle page.

Ce total est tiré à partir du contenu du pannier client, enregistré par exemple dans une variable de session.

Dans ce cas on ne peut pas mettre en cache aucune page. On peut parcontre imaginer de mettre en cache que des parties composant le site. Dans ce cas l'exemple que tu as donné est un bon moyen de prendre qu'une partie HTML du code et de la mettre en mémoire cache.

Mon exemple parcontre est à utiliser sur un portail de publication à haut trafic. Ce portail contient des informations mises à jour dans les bases de données par l'administrateur donc les pages, même dynamique ont un statut statique.

On peut envisager de faire un systéme de cache plus évolué, mais je ne publie ici qu'un tutoriel et non une source. Je pense donner une technique optimisée, performante, et assez modulable pour subvenir à vos besoins. A vous de publier maintenant une classe de fonctions complétes permettant d'avoir une mise en cache des éléments statiques tout en gérant des parties dynamiques.

Je tiens à rapeller quelque chose (pour ceux qui souhaiteraient exploiter cette technique): le systéme actuel de cache permet de diminuer les instructions PHP pour l'execution d'une page. En effet, j'ai fait un OS de portail assez complet, tout en objet, modulable en XML, avec beaucoups de classes (mapping de la base de données) et j'en passe des meuilleures. Si maintenant je souhaiterais garder un certain dynamisme dans mes pages, il faudrais le chargement de cet OS qui à lui seul est assez gourmand. Il faut donc penser à rendre les modules dynamiques indépendants de cet OS si on veut optimiser le systéme de cache.

Je vais mettre à jour ma source pour y inclure les conséils d'anthomicro (merci au passage de tes remarques constructives).

Commentaire de Anthomicro le 19/08/2005 14:52:01

"Dans ce cas on ne peut pas mettre en cache aucune page. On peut parcontre imaginer de mettre en cache que des parties composant le site. Dans ce cas l'exemple que tu as donné est un bon moyen de prendre qu'une partie HTML du code et de la mettre en mémoire cache."

Exact :-)

"Mon exemple parcontre est à utiliser sur un portail de publication à haut trafic. Ce portail contient des informations mises à jour dans les bases de données par l'administrateur donc les pages, même dynamique ont un statut statique."

Tout à fait je suis d'accord mais pourquoi t'utilises autant de code alors que celui que je poste plus haut remplit la même fonction (à savoir piquer le code source d'une page pour qu'elle devienne statique) ?

<?php
ob_start();
if(file_exists('cache.machin'))
{
echo file_get_contens('cache.machin');
}
else
{
echo 'machin truc bidule contenu de la page';
$cache=ob_get_contents();
//inscrit ensuite le cache dans le fichier
$fp=fopen('fichier.machin','w+');
fputs($fp,$cache);
fclose($fp);
}
ob_end_flush();
?>

C'est quand même simple et optimisé (beaucoup plus que l'utilisation de regex sur le buffer) c'est pour ça que je ne comprends pas à quoi est destiné ton exemple, si y'a certaines parties qui doivent rester dynamiques ou pas, tu m'as dit que non et donc c'est pourquoi je t'envoie le code que j'aurais utilisé pour faire la même chose ;-)

Commentaire de aKheNathOn le 19/08/2005 15:27:15

Je ne peux pas mettre ton exemple en ligne car c'est du code spaghéti, on dois au pire publier des fonctions, au mieux des classes, afin que tout le monde y retrouve son compte.

Maintenant c'est vrai que j'ai bindé la sortie HTML sur une fonction, cela peut te sembler moins bien, mais y'à une bonne raison, c'est qu'à n'importe quel endroit du code utilisateur il peut faire un die. Ma fonction sera comme même appellée aprés ce die, donc la fonction EndCache est une fonction obsoléte (aparement) cependant elle permet de mettre fin à l'execution du bind de maniére plus élégante, et permet à l'utilisateur de choisir de son moment de fin, s'il souhaite continuer aprés le cache une sortie HTML dynamique.

Maintenant avec ton approche de la mise en cache partielle, je suis entrain de ré-écrire le code sous forme de classe, mais cela sort complément du domaine du tutoriel. Je la publierais donc en tant que source pour que tout le monde puisse en profiter en plus de ce tutoriel.

Commentaire de Anthomicro le 19/08/2005 15:54:55

Ok :-)

Commentaire de aquewel le 04/09/2005 23:35:17

et peut on creer juste une variable chez l'user ??? et comment??? merci

Commentaire de wizard512 le 02/08/2006 11:44:06

bonne source et bon raisonnement,
ainsi qu'un débat intéréssant dans les commentaires.

    note : 9/10

Bon prog....

       ~~ DotWizard512 ~~

Commentaire de Defaite le 18/05/2007 11:58:04

Pareil que Wizard512, cette source permet de comprendre comment fonctionne le cache et comment l'utiliser.

Merci.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

cache limiter [ par brok ] quand j'appelle ma page page.php, je recoit le message d'erreur suivant:Warning: Cannot send session cache limiter - headers already sent (output star Page en cache [ par Tilix ] Bonjour,Je sais (et je ne pense pas) que ce sujet appartient à du " PHP ", mais je la pose quand même :Alors voilà, dans ma page, lorsque l'on fait un php et google ... ? [ par michelvernet2 ] bonjour,pour éviter un PB de session avec aol, je force la session dans l'adresse, voir : www.nouveauxobjets.com . Pour ceux qui ont la google barre, pb de cache [ par chino18 ] Salut les gens!!Je g&#233;n&#232;re un graphique sous forme d'image jpg avec JPgraph.J'affiche ensuite cette image dans ma php. Je g&#233;n&#232;re de Restreindre l’accès à une page via un système de ‘ticket’. [ par masterpingouin ] &nbsp;J&#146;ai t&#233;l&#233;charg&#233; un script php permettant de cr&#233;er un espace membre assez complet proposant &#224; l&#146;utilisateur de Cache: ob_start OU ajax ?? [ par malik7934 ] Salut salut,Voilà que je m'intéresse aux systèmes de cache... Voici un code bidon pour mettre une page en cache au-delà de 15 secondes (pages qui met interdire mise en cache [ par PoFMaN ] Ben voila, j'aimerai que mes pages php ne soient pas mises en cache par le navigateur. J'ai vu qu'il y avait pas mal de message sur ce forum concerna Rafraichir une page [ par niko14 ] Hello everybody!!Voila le bin's!!En fait voila, j'ai une page ou on choisit un type de budget et on valide!Qd on a valid&#233; on arrive sur une page session cache [ par chris tuckers ] Suite &#224; mon probleme de session, j'aimerais savoir s'il est possible, que lorsqu'une session expire, que la page renvoie sur la page d'accueil po Système de news avec limite par page [ par jackdaniel9 ] Il existe plein de script de système de news, mais j'ai pas trouvé un script qui permet de mettre une limite par page. Par exemple 2 news par pages...


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,061 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales