29
Le fonctionnement du cache Diverses manières de présenter Diverses manières de présenter En 5 Versions En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5 rue des Gazomètres, 1205 CH-Genève François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5 rue des Gazomètres, 1205 CH-Genève Tél: +41 22 / 388-33-14, [email protected] - Tél: +41 22 / 388-33-14, [email protected] -http://icp.ge.ch/sem/cms-spip/ Cours « Squelettes SPIP » - Mardi 21 avril et Mardi 5 mai 2009, 8h00-18h00 Cours « Squelettes SPIP » - Mardi 21 avril et Mardi 5 mai 2009, 8h00-18h00

Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Embed Size (px)

Citation preview

Page 1: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Le fonctionnement du cache

Diverses manières de présenterDiverses manières de présenter

En 5 VersionsEn 5 Versions

François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5 rue des Gazomètres, 1205 CH-GenèveFrançois Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5 rue des Gazomètres, 1205 CH-Genève

Tél: +41 22 / 388-33-14, [email protected] -Tél: +41 22 / 388-33-14, [email protected] -http://icp.ge.ch/sem/cms-spip/

Cours « Squelettes SPIP » - Mardi 21 avril et Mardi 5 mai 2009, 8h00-18h00Cours « Squelettes SPIP » - Mardi 21 avril et Mardi 5 mai 2009, 8h00-18h00

Page 2: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Le fonctionnement du cache

Version 1Version 1

Page 3: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5
Page 4: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

L’appel d’une page spécifique se fait par l’intermédiaire du moteur php de SPIP.

http://monsite.net/spip.php?page=article&id_article=5http://monsite.net/spip.php?page=article&id_article=5

Par exemple, pour appeler l’article n°5, l’URL correspondante est :

Le principe de fonctionnement du cache

Ou plus simplement depuis SPIP 1.9 :

http://monsite.net/spip.php?article5http://monsite.net/spip.php?article5

Page 5: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

#CACHE{24*3600}

Fichier appelé : page=article&id_article=5Fichier appelé : page=article&id_article=51. L’utilisateur appelle la page :/spip.php?

page=article&id_article=5

2. SPIP vérifie dans le dossier de cache /tmp/cache/S’il existe déjà le fichier correspondant

dossier /tmp/cache/

article5.php

Page 6: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Fichier appelé : page=article&id_article=5Fichier appelé : page=article&id_article=51. L’utilisateur appelle la page :/spip.php?

page=article&id_article=5

2. SPIP vérifie dans le dossier de cache /tmp/cache/S’il existe déjà le fichier correspondant

1. Le fichier appelé est donc article.html, avec en

paramètre id_article=5.

1. Le fichier appelé est donc article.html, avec en

paramètre id_article=5.

article5.php

dossier /tmp/cache/

#CACHE{24*3600}

Page 7: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

2. La première tâche du moteur php de SPIP consiste à vérifier dans le dossier /CACHE sur votre serveur, s’il existe déjà un fichiercorrespondant à cet article.

2. La première tâche du moteur php de SPIP consiste à vérifier dans le dossier /CACHE sur votre serveur, s’il existe déjà un fichiercorrespondant à cet article.

Fichier appelé : page=article&id_article=5Fichier appelé : page=article&id_article=51. L’utilisateur appelle la page :/spip.php?

page=article&id_article=5

2. SPIP vérifie dans le dossier de cache /tmp/cache/S’il existe déjà le fichier correspondant

article5.php

dossier /tmp/cache/

#CACHE{24*3600}

Page 8: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

2bis. Si un tel fichier existe dans le dossier de cache /tmp, le moteur php de SPIP vérifie sa date de création.

Si ce fichier est suffisamment récent, il le retourne directement à l’utilisateur. Le processus de consultation est alors terminé.

2bis. Si un tel fichier existe dans le dossier de cache /tmp, le moteur php de SPIP vérifie sa date de création.

Si ce fichier est suffisamment récent, il le retourne directement à l’utilisateur. Le processus de consultation est alors terminé.

Fichier appelé : page=article&id_article=5Fichier appelé : page=article&id_article=51. L’utilisateur appelle la page :/spip.php?

page=article&id_article=5

2. SPIP vérifie dans le dossier de cache /tmp/cache/S’il existe déjà le fichier correspondant

article5.php

dossier /tmp/cache/

#CACHE{24*3600}

Page 9: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Fichier appelé : page=article&id_article=5Fichier appelé : page=article&id_article=51. L’utilisateur appelle la page :/spip.php?

page=article&id_article=5

article5.html

2. SPIP vérifie dans le dossier de cache /tmp/cache/S’il existe déjà le fichier correspondant

/tmp

3. S’il n’existe pas un tel fichier dans le cache /tmp (première visite sur cet article, par exemple),

ou si son âge est trop ancien,

Le moteur php de SPIP démarre le calcul de cette page.

3. S’il n’existe pas un tel fichier dans le cache /tmp (première visite sur cet article, par exemple),

ou si son âge est trop ancien,

Le moteur php de SPIP démarre le calcul de cette page.

article5.php

#CACHE{24*3600}

Page 10: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Fichier appelé : page=article&id_article=5Fichier appelé : page=article&id_article=51. L’utilisateur appelle la page :/spip.php?

page=article&id_article=5

article5.html

2. SPIP vérifie dans le dossier de cache /tmp /cache/S’il existe déjà le fichier correspondant

/tmp

4. La page article.html est alors chargée et analysée. Elle contient la mise en page correspondant à ce type de document.

Il s’agit de HTML complété d’indications permettant de placer les éléments tirés de la base de données.

En fonction des éléments requis par article.html, SPIP va chercher les informations nécessaires tirées de la base de données mySQL et les insérer aux endroits prévus.

4. La page article.html est alors chargée et analysée. Elle contient la mise en page correspondant à ce type de document.

Il s’agit de HTML complété d’indications permettant de placer les éléments tirés de la base de données.

En fonction des éléments requis par article.html, SPIP va chercher les informations nécessaires tirées de la base de données mySQL et les insérer aux endroits prévus.

article5.php

#CACHE{24*3600}

Page 11: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Fichier appelé : page=article&id_article=5Fichier appelé : page=article&id_article=51. L’utilisateur appelle la page :/spip.php?

page=article&id_article=5

article5.html

2. SPIP vérifie dans le dossier de cache /tmpS’il existe déjà le fichier correspondant

5. Un fichier est ainsi fabriqué par le moteur php de SPIP, à partir de la description contenue dans article.html, avec les éléments tirés de la base de données pour l’id_article=5. Ce fichier est alors sauvegardé dans le dossier de cache /tmp et renvoyé au visiteur.

5. Un fichier est ainsi fabriqué par le moteur php de SPIP, à partir de la description contenue dans article.html, avec les éléments tirés de la base de données pour l’id_article=5. Ce fichier est alors sauvegardé dans le dossier de cache /tmp et renvoyé au visiteur.

article5.php

dossier /tmp/cache/

#CACHE{24*3600}

Page 12: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Fichier appelé : page=article&id_article=5Fichier appelé : page=article&id_article=51. L’utilisateur appelle la page :/spip.php?

page=article&id_article=5

article5.html

2. SPIP vérifie dans le dossier de cache /tmpS’il existe déjà le fichier correspondant

Lors d’une visite suivante, si le délai entre les deux visites est suffisamment court, c’est donc ce nouveau fichier stocké dans le cache /tmp qui est retourné, sans avoir à faire un nouveau calcul à partir de la base de données.

En cas de plantage de la base de données, c’est forcément le fichier en cache qui est retourné, même s’il est « trop âgé ».

Lors d’une visite suivante, si le délai entre les deux visites est suffisamment court, c’est donc ce nouveau fichier stocké dans le cache /tmp qui est retourné, sans avoir à faire un nouveau calcul à partir de la base de données.

En cas de plantage de la base de données, c’est forcément le fichier en cache qui est retourné, même s’il est « trop âgé ».

article5.php

dossier /tmp/cache/

#CACHE{24*3600}

Page 13: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Fichier appelé : page=article&id_article=5Fichier appelé : page=article&id_article=51. L’utilisateur appelle la page :/spip.php?

page=article&id_article=5

article5.html

2. SPIP vérifie dans le dossier de cache /tmpS’il existe déjà le fichier correspondant

Remarque. On voit ici que chaque page du site est mise en cache individuellement, et chaque re-calcul est provoqué par les visites du site.

Il n’y a pas, en particulier, un re-calcul de toutes les pages du site d’un seul coup à échéance régulière (ce genre de « grosse manoeuvre » ayant le bon goût de surcharger le serveur et de le faire parfois planter).

Remarque. On voit ici que chaque page du site est mise en cache individuellement, et chaque re-calcul est provoqué par les visites du site.

Il n’y a pas, en particulier, un re-calcul de toutes les pages du site d’un seul coup à échéance régulière (ce genre de « grosse manoeuvre » ayant le bon goût de surcharger le serveur et de le faire parfois planter).

article5.php

dossier /tmp/cache/

#CACHE{24*3600}

Page 14: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Le fonctionnement du cache

Version 2Version 2

Page 15: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5
Page 16: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Le fonctionnement du cache

Version 3Version 3

Page 17: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Dans le dossier tmp/ sont stockés tous les fichiers temporaires :• /cache/ : de caches des pages html affichées pour le site;• /dump/ : de sauvegarde de la base de données (import /export);• /upload/ : des arborescences de documents disponibles dans l ’espace privé.• /visites/ : relatifs aux statistiques de consultation;

• *.log : de logs d ’exécution du site.

Le dossier tmp/ peut être vidé à tout moment.

Dans le dossier tmp/ sont stockés tous les fichiers temporaires :• /cache/ : de caches des pages html affichées pour le site;• /dump/ : de sauvegarde de la base de données (import /export);• /upload/ : des arborescences de documents disponibles dans l ’espace privé.• /visites/ : relatifs aux statistiques de consultation;

• *.log : de logs d ’exécution du site.

Le dossier tmp/ peut être vidé à tout moment.

Roles des répertoires et fichiers de tmp/

Page 18: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Le principe de fonctionnement du cache, de manière simplifiée

Par défaut, une page est considérée comme trop vieille au bout de 3600 secondes

Une fois que vous aurez compris le langage SPIP, vous pourrez modifier ce délai en vous servant de la balise #CACHE (cf. plus loin).

Page 19: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Le principe de fonctionnement du cache, de manière simplifiée

Le système de cache permet :

• de stocker chaque page temporairement et ainsi

• d’éviter de provoquer des appels à la base de données à chaque visite.

Page 20: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

tmp/cache/ est le dossier où sont placés les fichiers créés par le moteur SPIP pour le cache selon l'algorithme précédemment décrit et selon un délai fixé par l’instruction #CACHE{86400} (86400 s) placée au début de chaque fichier html du squelette (ici 86400 s = 24 h x 3600 s/h).

tmp/cache/ est le dossier où sont placés les fichiers créés par le moteur SPIP pour le cache selon l'algorithme précédemment décrit et selon un délai fixé par l’instruction #CACHE{86400} (86400 s) placée au début de chaque fichier html du squelette (ici 86400 s = 24 h x 3600 s/h).

Le principe de fonctionnement du cache, de manière simplifiée

On peut aussi écrire l’instruction (une balise SPIP) : #CACHE{24 * 3600} ou #CACHE{3 * 24 * 3600}placée au début de chaque squelette rubrique.html, article.html, breve.html, etc.

On peut aussi écrire l’instruction (une balise SPIP) : #CACHE{24 * 3600} ou #CACHE{3 * 24 * 3600}placée au début de chaque squelette rubrique.html, article.html, breve.html, etc.

/cache/

Page 21: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Le principe de fonctionnement du cache, de manière simplifiée

Vider le cache manuellement : Vider le cache manuellement : Voir en ligne

Le système de cache « construit » et stocke chaque page à des intervalles réguliers fixés par l’instruction #CACHE{86400} dans le répertoire tmp/cache/. Il évite ainsi son recalcul à chaque visite d'un utilisateur :

• La base de données n'est pas sollicitée à chaque visite.• La charge sur le serveur est réduite et la vitesse d'affichage des pages très largement accélérée.• Le site sous SPIP reste consultable même lorsque la base mySQL est en panne.

Le dossier tmp/cache/ peut être vidé à tout moment.

Page 22: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Le fonctionnement du cache

Version 4Version 4

Page 23: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

#CACHE{24*3600}

Fichier appelé : page=article&id_article=5Fichier appelé : page=article&id_article=51. L’utilisateur appelle la page :/spip.php?page=article&id_article=5

2. SPIP vérifie dans le dossier de cache /tmp/cache/S’il existe déjà le fichier correspondant

dossier /tmp/cache/

article.php

Gérer le cache Gérer le cache (1/5)(1/5)

Page 24: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Gérer le cache Gérer le cache (2/5)(2/5)

Lorsqu’une page est demandée à SPIP, par exemple l’URL http://localhost/spip/spip.php?page=article&id_article=5

Dans notre exemple nous avions fixé des #CACHE{0}; d’où un recalcul systématique des pages à chaque consultation du site.

Si ce délai n’est pas dépassé, SPIP affiche le fichier présent dans le CACHE .Si ce délai n’est pas dépassé, SPIP affiche le fichier présent dans le CACHE .

Si ce délai est dépassé, SPIP recalcule le fichier comme indiqué ci-dessus.Si ce délai est dépassé, SPIP recalcule le fichier comme indiqué ci-dessus.

Si ce fichier existe, SPIP compare l’âge du fichier caché aux $delais fixés dans le fichier d’appel tutoriel.php3. Si ce fichier existe, SPIP compare l’âge du fichier caché aux $delais fixés dans le fichier d’appel tutoriel.php3.

SPIP regarde dans son sous-répertoire tmp/cache/ si ce fichier existe :

Si ce fichier n’existe pas, SPIP calcule ce fichier en se connectant à la base de données pour y lire les informations requises, dépose le résultat du calcul dans le /tmp/cache et l’affiche à l ’écran de l’utilisateur.

Si ce fichier n’existe pas, SPIP calcule ce fichier en se connectant à la base de données pour y lire les informations requises, dépose le résultat du calcul dans le /tmp/cache et l’affiche à l ’écran de l’utilisateur.

Page 25: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

La page « id_article=5 » est demandée à SPIP, c ’est à dire l’URL

http://localhost/spip/spip.php?page=article&id_article=5,

La page « id_article=5 » est demandée à SPIP, c ’est à dire l’URL

http://localhost/spip/spip.php?page=article&id_article=5,

Non : Délaidépassé

Non : Délaidépassé

Calcule id_article=5

en intégrant leséléments de la

base de données

NonNon

Consulte CACHE : Existence fichierid_article=5 ?

Mise en CACHEMise en CACHE

Affichearticle12.html

OuiOui

$delais <Age-Fichier

?

Affichearticle5.html

Fichier Existe ?

Oui : Délai Non-dépasséOui : Délai

Non-dépassé

(3/5)(3/5)

Page 26: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

La page «  id_article=5  » est demandée à SPIP, c ’est à dire http://localhost/spip/spip.php?page=article&id_article=5,

La page «  id_article=5  » est demandée à SPIP, c ’est à dire http://localhost/spip/spip.php?page=article&id_article=5,

Non : Délaidépassé

Non : Délaidépassé

Calcule id_article=5

en intégrant leséléments de la

base de données

NonNon

Consulte CACHE : Existence fichierid_article=5 ?

Mise en CACHEMise en CACHE

Affichearticle12.html

OuiOui

$delais <Age-Fichier

?

Affichearticle5.html

Fichier Existe ?

Oui : Délai Non-dépasséOui : Délai

Non-dépassé

Schéma ou Organigramme ?Chacun choisit

le «langage» qui lui convient !

Schéma ou Organigramme ?Chacun choisit

le «langage» qui lui convient !

Distinguer : le Squelette HTML en amont du CACHE du Fichier HTML calculé pour le CACHE et l’ECRAN

Distinguer : le Squelette HTML en amont du CACHE du Fichier HTML calculé pour le CACHE et l’ECRAN

Page 27: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Passons à #CACHE{3600}; (c’est en secondes) : Notre page web n’est donc recalculée que si, lorsqu’un visiteur la demande, sa version cachée date de plus d’une heure (soit 3600 s.). Sinon, SPIP lit simplement le contenu du fichier caché, et renvoie le résultat sans se connecter à la base de données (sauf pour y insérer un «hit» dans les statistiques).

• Pour développer en mode local : #CACHE{0};

• Pour la consultation en mode serveur : #CACHE{24*3600};

ou plus : #CACHE{72*3600}; (soit 3 jours par exemple)

Gérer le cache Gérer le cache (5/5)(5/5)

Réglage du délai :

Page 28: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5

Le fonctionnement du cache

Version 5Version 5

Page 29: Le fonctionnement du cache Diverses manières de présenter En 5 Versions François Daniel Giezendanner, SEM (Service Ecoles et Medias) - DIP - Genève, 5