Système de cache directement dans la base de données Mysql
20 messages
• Page 1 sur 2 • 1, 2
-

finstreet - WRInaute accro

- Messages: 16999
- Inscription: 10 Juil 2005
Système de cache directement dans la base de données Mysql
Bonjour
Dans l'optique de poursuivre l'allègement de ma charge serveur -j'y arrive d'ailleurs plutôt bien en ce moment-, j'envisage la possibilité de créer des pages en cache. Mais ces pages ne seraient pas générées et laissées sur le serveur mais enregistrées dans la base de données, dans une table. A chaque page est associée une url, et à chaque url un contenu.
Au premier chargement d'une url dans la journée, le code est généré et intégré dans une table. Comme ca, le prochain chargement ne nécessitera qu'une seule requête affichant la totalité de la page. La table sera vidée tous les soirées (ouais j'ai envie lol) et ne devrait pas dépasser les 100.000 lignes à la fin de la journée.
Ma question qui en est une, sans en être une : est ce que ça peut avoir un quelconque intérêt ? Enfin le truc plutôt : quels sont les limites d'un tel système ? Je cherche plutôt à me dire que l'idée est mauvaise, car ça va me prendre pas mal de temps à développer lol
Marchi
Dans l'optique de poursuivre l'allègement de ma charge serveur -j'y arrive d'ailleurs plutôt bien en ce moment-, j'envisage la possibilité de créer des pages en cache. Mais ces pages ne seraient pas générées et laissées sur le serveur mais enregistrées dans la base de données, dans une table. A chaque page est associée une url, et à chaque url un contenu.
Au premier chargement d'une url dans la journée, le code est généré et intégré dans une table. Comme ca, le prochain chargement ne nécessitera qu'une seule requête affichant la totalité de la page. La table sera vidée tous les soirées (ouais j'ai envie lol) et ne devrait pas dépasser les 100.000 lignes à la fin de la journée.
Ma question qui en est une, sans en être une : est ce que ça peut avoir un quelconque intérêt ? Enfin le truc plutôt : quels sont les limites d'un tel système ? Je cherche plutôt à me dire que l'idée est mauvaise, car ça va me prendre pas mal de temps à développer lol
Marchi
-

Julia41 - WRInaute passionné

- Messages: 1765
- Inscription: 31 Aoû 2007
Re: Système de cache directement dans la base de données Mysql
Ca peut être pas mal si tes pages sont longues à être compilés, vont chercher du contenu ailleurs (parseur RSS par exemple).
Sinon, je ne vois pas trop d'intêret.
En technique de cache pas mal, tu as memcache (je suis fan perso), tu peux stocker tout ce que tu veux dedans et vu que c'est directement sur la RAM, tu n'as pas d'accès disque pour cette partie (très rapide donc).
Sinon, regarde aussi pour ton moteur de cache SQL, le mode MEMORY est pas mal mais lock comme du MyISAM.
Sinon, je ne vois pas trop d'intêret.
En technique de cache pas mal, tu as memcache (je suis fan perso), tu peux stocker tout ce que tu veux dedans et vu que c'est directement sur la RAM, tu n'as pas d'accès disque pour cette partie (très rapide donc).
Sinon, regarde aussi pour ton moteur de cache SQL, le mode MEMORY est pas mal mais lock comme du MyISAM.
-

biddybulle - WRInaute passionné

- Messages: 1619
- Inscription: 30 Mai 2005
Re: Système de cache directement dans la base de données Mysql
J'ai du mal également à voir l'interêt, un accès http à une page/fichier .html (Pas d'accès BDD, pas de php ou autre) est plus rapide.
-

fandecine - Modérateur

- Messages: 2047
- Inscription: 2 Avr 2005
Re: Système de cache directement dans la base de données Mysql
Une petite recette très efficace pour faire un cache de données
Tu crées une classe structurée de la sorte :
Cette méthode présente l'avantage de ne garder en cache que ce qui est nécessaire (les données et non le HTML) donc un gain de place et puis cela permet de conserver l'indépendance entre le contenu et la présentation du contenu. Il est également possible de fractionner le cache, par exemple sur une page ou tu présente une fiche produit et la liste des derniers produits ajoutés tu stocke les deux dans des fichiers différents pour que la mise à jour de l'un ne nécessité pas de régénérer l'autre.
Tu crées une classe structurée de la sorte :
- Code: Tout sélectionner
1 - Vérification de l'existence du fichier de données
2 - si il existe pas, tu fais tes requêtes à la BDD
A - tu stockes les données dont tu as besoin pour générer ta page dans un tableau qui sera accéssible grâce aux fonctions de ta classe
B - tu sérialise le tableau et tu stocke le résultat dans un fichier
3 - si le ficheir existe
A - tu le lis pour récuperer son contenu
B - tu desérialise les données dans un tableau accessible grâce aux fonctions de ta classe
Cette méthode présente l'avantage de ne garder en cache que ce qui est nécessaire (les données et non le HTML) donc un gain de place et puis cela permet de conserver l'indépendance entre le contenu et la présentation du contenu. Il est également possible de fractionner le cache, par exemple sur une page ou tu présente une fiche produit et la liste des derniers produits ajoutés tu stocke les deux dans des fichiers différents pour que la mise à jour de l'un ne nécessité pas de régénérer l'autre.
-

spout - WRInaute accro

- Messages: 4382
- Inscription: 14 Mai 2003
Re: Système de cache directement dans la base de données Mysql
Il y a APC aussi http://php.net/manual/fr/book.apc.php
(J'ai choisi celui là car il sera intégré par défaut à PHP6)
(J'ai choisi celui là car il sera intégré par défaut à PHP6)
-

raljx - WRInaute accro

- Messages: 2823
- Inscription: 10 Juil 2006
Re: Système de cache directement dans la base de données Mysql
en effet comme le dit bidibulle l'acces a une page html est naturellement rapide.
j'opterai donc :
------------------
soit pour une mise en cache classique des pages,
soit par l'execution d'un cron qui te genererai toutes tes pages html d'un coup (style lancé le matin à 5h00) et effacer le cache la nuit ...
niveau dev 1/2 journée devrait suffire
pour des performances plus que correctes ...
j'opterai donc :
------------------
soit pour une mise en cache classique des pages,
soit par l'execution d'un cron qui te genererai toutes tes pages html d'un coup (style lancé le matin à 5h00) et effacer le cache la nuit ...
niveau dev 1/2 journée devrait suffire
-

spout - WRInaute accro

- Messages: 4382
- Inscription: 14 Mai 2003
Re: Système de cache directement dans la base de données Mysql
Je vois plutôt du cache de l'output HTML avec PEAR::Cache_Lite sur disque plutôt qu'en BDD.
Dans le "controller":
Si pas de données $_POST et si membre pas loggué
=> Activer cache
Sinon
=> Désactiver cache
Ce n'est pas dur à mettre en place:
http://pear.php.net/manual/en/package.caching.cache-lite.intro.php
Dans le "controller":
Si pas de données $_POST et si membre pas loggué
=> Activer cache
Sinon
=> Désactiver cache
Ce n'est pas dur à mettre en place:
http://pear.php.net/manual/en/package.caching.cache-lite.intro.php
-

finstreet - WRInaute accro

- Messages: 16999
- Inscription: 10 Juil 2005
Re: Système de cache directement dans la base de données Mysql
Ah ben c'est pointu
Bon vais creuser un peu tout ca
Pas mal de notions à assimiler encore... mais cool j'ai plein de raisons de ne pas choisir cette solution 
Marchi pour tout
Marchi pour tout
-

Julia41 - WRInaute passionné

- Messages: 1765
- Inscription: 31 Aoû 2007
Re: Système de cache directement dans la base de données Mysql
Il y a pas mal d'intérêt à utiliser du cache dans une base de données plutôt que sur le disque.
Si tu utilises plusieurs dédiés et une base MySQL, plutôt que de dispatcher tes fichiers de cache ou de les générer sur chaque serveur, tu les balances partout (mais bon, dans ce cas memcache est plus rentable).
Tout plein de solution s'offre à toi en tout cas mais le cache SQL est une bonne solution aussi (les accès DD ne sont pas toujours plus rapide que mysql avec du query cache suffisament performant surtout sur des serveurs de type "DD mutualisé" à la cloud/RPS).
Si tu utilises plusieurs dédiés et une base MySQL, plutôt que de dispatcher tes fichiers de cache ou de les générer sur chaque serveur, tu les balances partout (mais bon, dans ce cas memcache est plus rentable).
Tout plein de solution s'offre à toi en tout cas mais le cache SQL est une bonne solution aussi (les accès DD ne sont pas toujours plus rapide que mysql avec du query cache suffisament performant surtout sur des serveurs de type "DD mutualisé" à la cloud/RPS).
-

raljx - WRInaute accro

- Messages: 2823
- Inscription: 10 Juil 2006
Re: Système de cache directement dans la base de données Mysql
maaa finstreet il dit pas s'il a plusieurs serveurs (mysql, front, mail) ...
si tu pars dans l'optique d'un seul serveur pour tout un systeme de cache classique fonctionne tres bien...
y fait combien de VU le mosieur ?
si tu pars dans l'optique d'un seul serveur pour tout un systeme de cache classique fonctionne tres bien...
y fait combien de VU le mosieur ?
-

finstreet - WRInaute accro

- Messages: 16999
- Inscription: 10 Juil 2005
Re: Système de cache directement dans la base de données Mysql
y'a déjà un QUERY Cache en fait. Ca permet de bien réduire le temps mais je n'ai jamais su quand le cache se vidait. Je pense m'orienter vers une solution intermédiaire, à savoir sélectionner des pages qui n'évolueront plus ou pas avec le temps (sauf action de ma part) et créer à la volée des pages html. Car y'a des pages qui évoluent 30 fois par jour, et là ca ne sert à rien de mettre en cache.
En tout cas, suis passé avec pas mal de boulot à une charge serveur constante aux alentours des 50-60% contre des minimums à 200% avant
En tout cas, suis passé avec pas mal de boulot à une charge serveur constante aux alentours des 50-60% contre des minimums à 200% avant
20 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Exportation et Importation de Ma base de données Mysql
- Dupliquer une base de données MySQL
- Manipuler une grosse base de données MySql
- Recherche dans une base de données MySQL
- Récupérer les données adwords en base (MySQL ou autre)
- importation de données dans base de données
- Base de données de Google Base
- Système de cache
- Rewriting et système de cache
- Système de cache et de statistiques
Consultez la description détaillée des produits ou services de Google suivants : Google Automat, Google Base
- Positionnement sur data centers Google
Cet outil vous permet d'afficher sur une seule page les résultats Google effectués sur de nombreux data centers (centres de données). - Suggestion de mots Google
Cet outil vous permet d'obtenir une liste de 10 mots ou expressions suggérés par Google sur la base d'un mot que vous fournissez.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


