header structure

Il existe beaucoup de CMS (Content Management System) sur le marché et nombreux sont ceux qui posent des problèmes de performance lors de fortes charges.

Le problème récurent de ces CMS provient du système de "caching" qui intervient trop loin dans le workflow de délivrance d'une page Web.

Voici selon moi l'algorithme générique qui devraient être implémentés par tous les CMS du marché.

workflow http

Je serai ravis d'avoir un retour sur cette analyse synthétique. Voyez-vous d'autres idées d'optimisation de cet algorithme ?


Crédit photo : Daveybot

1. Le , 02:33 par bobzer
e275100bb9f91c3fa261a4202eca9228

je suis désolé d'apprendre que l'algorithme que tu présente ne soit pas celui qui est utilisé par tous
peut tu poster les algorithmes des principaux ? (drupal ?)
pour comparer
merci

2. Le , 07:10 par Pierre
b6ef160822bd8bb88ca28e0e5bcc62d0

Je crois que la gestion d'un cache de contenu dynamique existe déjà.
En tout cas, Korben y fait souvent allusion.

En ce qui concerne le contenu statique, il est possible de le mettre sur un autre domaine spécifique (static.domaine.fr ex) et de mettre un serveur très léger comme nginx

3. Le , 09:05 par ftc
99a508588a183bee7a51852a3b55393a

Je vois deux défauts à ton système:

1) D'abord les requêtes POST ne doivent jamais créer des pages mises en cache

2) Ça manque de granularité, pourquoi régénérer toute la page quand seulement un ou deux éléments ont été changés ? Un cache au niveau slice (partie de page) me parait être largement plus approprié et largement suffisant.

Ensuite il existe des système appelés proxy cache qui gèrent très bien la mise en cache des pages dans leur globalité. Le rôle du CMS est de générer les pages et rapidement si possible, laissons le reste aux autres sous systèmes, ça évitera d'avoir des usines à gaz comme WordPress qui tentent sans arrêt de réinventer la roue et souvent très mal.

4. Le , 09:31 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

@Pierre : La gestion de caches de contenu dynamique existe mais souvent sous forme de plugins ..... Avant que le plugin ne se déclenche, toutes les classes du CMS ont été chargés en mémoire .. Ce qui est très dommage.

@bobzer : Je vais regarder les classes de drupal pour voir à quel endroit intervient le système de caching. Il est très probable que le système de caching ne soit pas dans le index.php mais en fin de course ... ;-(

@ftc : Pour le 1 : tu as raison, c'est une erreur de mon schéma.
Pour le 2 : Sois utiliser un cache de "slice" mais très peux de CMS sont capable de générer des slices malheureusement, sinon l'autre astuce pour le contenu qui change souvent sur une page c'est d'utiliser un composant Ajax. La structure de la page ne change pas, seuls certains blocs sont chargés dynamiquement par le client.

5. Le , 09:31 par Francis
3dcd8211c7a17216d3537ee9ed7d0098

C'est rigolo car je suis actuellement en train d'essayer de trouver le système de cache qui pourrait être le plus adapté à un ou des projets que je gère actuellement.

Je continuerais à chercher encore un p'tit peu. Quand j'aurais trouvé quelque chose d'assez potable je te le présenterais afin que tu me dises ce que tu en penses.

6. Le , 09:37 par Francis
3dcd8211c7a17216d3537ee9ed7d0098

@Ludovic Toinel : Concernant le point de chargement en Ajax je ne le conseille pas trop. S'il s'agit de contenus importants, tu as beaucoup de chances pour que notre ami Google ne le prendra pas en compte.

7. Le , 11:49 par Nico
d8c4dff393bc79059becdd9194df912d

C'est cool, je travaille sur un killer semantic CMS, et j'ai un ticket ouvert pour le cache processor.
Merci pour ton post, il m'a permis d'enrrichir mon algorithme :
http://picasaweb.google.com/lh/phot...

(Je publie là une exclu pour le site de Ludo, la première release ne verra le jour que dans quelques semaines)

8. Le , 21:53 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

@Nico : Excellent ;-) !!! Je vois que je ne suis pas le seul Geek à faire des diagrammes d'état. Je suis super intéressé de savoir ce que ton CMS est capable de faire, as-tu diffusé des news ?

@Francis : Pour l'ajax, c'est vrai ... Même si aujourd'hui Google est normalement capable d'indexer du contenu Ajax si l'on suit les recommandations.

Sinon au niveau d'apache, il y a le module SSI qui permet de faire des agrégations sympa :

http://httpd.apache.org/docs/1.3/ho...

9. Le , 14:59 par Nico
d8c4dff393bc79059becdd9194df912d

@Ludovic Toinel : Merci ;). Les news à propos de ce CMS, pour l'instant, c'est en exclusivité confidentielle sur Geeek.org, dans les commentaires et les backlinks du présent billet.

La première page au monde qui créa un lien sur le site du projet KaraCos, c'est ici, c'était il y a 23h et 48 minutes !!!

10. Le , 22:17 par briacsuquet
680d5b6e645a8cdf20c4ec8c1e69a6bf

La vidéo de présentation de Apple de l'iPad dispo sur youtube :
http://www.youtube.com/watch?v=6Azg...

11. Le , 10:55 par Benoît Dissert
20fef2230709139866e7a69ff90f56af

Salut Ludovic,

Ton schéma ne prévoit pas les éventuelles modifications des pages qui ne reposent sur aucun paramètres : exemple (idiot soit) l'heure serveur est affichée.

Cela signifie que, côté serveur, les différents composants doivent indiquer au CMS s'ils supportent le fait d'être cachés, et avec quel critère de raffinement (certaines parties peuvent être cachées, malgré la mise à jour de paramètres) et quel critères d'invalidation.

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.