- Statut : non résolu
- Ce sujet contient 61 réponses, 14 participants et a été mis à jour pour la dernière fois par
AmO, le il y a 18 années et 2 mois.
-
AuteurMessages
-
7 décembre 2006 à 17 h 14 min #585502LH wrote:Sous WP2.0.5, il y a un système de cache:
La fonction bloginfo charge les données SQL dans un cache. Il n’y devrait donc pas avoir de requête SQL à chaque fois… Enfin si ce cache fonctionne correctement.
De ce que j’ai regardé, ce cache utilise un … fichier !
Peut-être que ça va réconcilier un peu tout le monde ?D’après wordpress.org, le cache est stocké dans le répertoire /wp-content/cache/, mais j’ai beau vérifier, je n’y trouve jamais un seul fichier 😉
Peut-être y a t-il une option particulière à activer pour la gestion du cache (pas répertoriée en tout cas) mais si c’est le cas il faut activer cette option « en dur », probablement avec un define(‘USE_CACHE’, true); placé dans un fichier top-level 😉 (ils auraient pu l’activer par défaut 😕 )LH wrote:Ceci dit, s’il y a des problèmes de performances, il reste à trouver d’où ça vient vraiment.
Est-ce que vous avez des chiffres ? comme le nombre de requêtes, le temps de réponse pour vos blogs, histoire d’avoir une idée plus précise.Sur le Newbie-Project (page d’accueil par ex) je suis à 24 requêtes au premier chargement puis 22 requêtes pour les chargements suivants soit environ 0.9-1.2 secondes de génération PHP 😕 😕
LH wrote:Mon idée sur la lenteur de WordPress est que ça doit venir pour une bonne partie des apply_filter.
L’application passe son temps à faire des copies de chaînes de caractères pour un éventuel traitement…Faudrait compter le nombre d’apply_filters appelés pour une page comme la page d’accueil 🙂
7 décembre 2006 à 19 h 16 min #585503MS-DOS_1991 wrote:D’après wordpress.org, le cache est stocké dans le répertoire /wp-content/cache/, mais j’ai beau vérifier, je n’y trouve jamais un seul fichier 😉
Peut-être y a t-il une option particulière à activer pour la gestion du cache (pas répertoriée en tout cas) mais si c’est le cas il faut activer cette option « en dur », probablement avec un define(‘USE_CACHE’, true); placé dans un fichier top-level 😉 (ils auraient pu l’activer par défaut 😕 )hum wordpress a les droits en écriture sur ton fichier cache ?
je pense que c activé par défaut, mais le problème vien d’un refus du serveur !7 décembre 2006 à 19 h 32 min #585504Les droits sont à 777 pour le répertoire /wp-content/cache 😕
J’ai essayé de définir la constante WP_CACHE dans mon wp-config.php (define(‘WP_CACHE’, true);) et cela m’affiche un message d’erreur :
Warning: require(/homepages/…/…/htdocs/newbie-project/wp-content/advanced-cache.php) [function.require]: failed to open stream: No such file or directory in /homepages/…/…/htdocs/newbie-project/wp-settings.php on line 69
Fatal error: require() [function.require]: Failed opening required ‘/homepages/…/…/htdocs/newbie-project/wp-content/advanced-cache.php’ (include_path=’.:/usr/local/lib/php5′) in /homepages/…/…/htdocs/newbie-project/wp-settings.php on line 69
J’en conclus que :
1. Le cache de WordPress n’est pas activé par défaut
2. Pour l’activer, il faut bien définir une constante soi-même dans le fichier de configuration
3. Il me manque le fichier wp-advanced-cache.php situé dans le répertoire /wp-content/ 😋… J’imagine que la gestion du cache a été supprimée (et/ou oubliée) de la version courante de WP 😕
7 décembre 2006 à 19 h 38 min #585505Dans config.php, j’ai rajouté (vu je sais plus trop où, mais surement dans le codex) :
define (‘WPLANG’, ‘fr_FR’);
define(‘ENABLE_CACHE’,true);7 décembre 2006 à 19 h 55 min #585506Pas mal, je viens de passer de 24 requêtes à 51 😮 puis juste après 18 😉
Des tonnes de répertoires / fichiers sont apparus dans mon répertoire de cache, tous avec des noms et des contenus d’apparence aléatoire (probablement cryptés)… Par simple curiosité, j’aimerais savoir de quel type de cryptage il s’agit, pour le désactiver éventuellement, ce qui sauverait pas mal de ressources tout en ne compromettant pas ma vie privée 🙂
Ex de nom de fichier:
4094032b126c32fb717c9f34ed1758af.php
8 décembre 2006 à 9 h 46 min #585507Salut,
A propos du cache, j’ai jeté un autre coup d’oeil au fichier wp-includes/cache.php
Voilà une tentative d’explication, n’hésitez pas à me corriger si je me plante.
De ce que j’ai compris, il y a 2 niveaux de cache:
– un cache ‘applicatif’
– un cache ‘persistent’Le cache ‘applicatif’:
Il doit répondre au problème de faire N requêtes SQL pour lire N valeurs d’options.
Le cache fait UNE requête pour lire les N valeurs et les garde en mémoire.
Ce cache ‘applicatif’ devrait être actif sur toutes les installations.
Mais il semble y avoir des subtilités avec les options ‘autoload’ ou non.
Pour le moment, seules les valeurs des ‘catégories’ et des ‘options’ utilisent ce cache.Le cache ‘persistent’:
Il doit répondre au problème que, même avec un cache ‘applicatif’ activé, si on a 100 visiteurs en 1 minute, on aura quand même 100 requêtes SQL en 1 minute (1 requête SQL par cache ‘applicatif’).
Pour optimiser, le 1er cache ‘applicatif’ fait la requête SQL et utilise alors un fichier pour sauvegarder ses valeurs. Les 99 visiteurs qui suivent utiliseront alors ce fichier (‘cache persistent’) sans passer par la base SQL.De ce qu’on peut voir dans le constructeur de la classe WP_Object_Cache, le cache ‘persistent’ ne s’active pas sur toutes les plateformes:
– il faut que ENABLE_CACHE soit défini
– il faut que DISABLE_CACHE ne soit pas défini
– il faut que PHP soit en safe_mode off
– il faut bien sûr que le répertoire pour le fichier soit accessible en écritureCe serait bien de savoir sur quels hébergeurs le cache ‘persistent’ fonctionne!
Une dernière remarque:
Le cache ‘persistent’ est bien pour un grand nombre de visiteurs. Par contre, le premier visiteur doit créer le fichier cache alors que ça ne lui sert à rien. Donc si vous n’avez pas beaucoup de visites sur votre site, ce n’est pas la peine de créer ce fichier. Le fichier a une durée de validité et au delà, il ne sera pas utilisé.[c]
function WP_Object_Cache() {
global $blog_id;if (defined(‘DISABLE_CACHE’))
return;if ( ! defined(‘ENABLE_CACHE’) )
return;// Disable the persistent cache if safe_mode is on.
if ( ini_get(‘safe_mode’) && ! defined(‘ENABLE_CACHE’) )
return;if (defined(‘CACHE_PATH’))
$this->cache_dir = CACHE_PATH;
else
// Using the correct separator eliminates some cache flush errors on Windows
$this->cache_dir = ABSPATH.’wp-content’.DIRECTORY_SEPARATOR.’cache’.DIRECTORY_SEPARATOR;if (is_writable($this->cache_dir) && is_dir($this->cache_dir)) {
$this->cache_enabled = true;
} else {
if (is_writable(ABSPATH.’wp-content’)) {
$this->cache_enabled = true;
}
}if (defined(‘CACHE_EXPIRATION_TIME’))
$this->expiration_time = CACHE_EXPIRATION_TIME;if ( defined(‘WP_SECRET’) )
$this->secret = WP_SECRET;
else
$this->secret = DB_PASSWORD . DB_USER . DB_NAME . DB_HOST . ABSPATH;$this->blog_id = $this->hash($blog_id);
}[/c]
8 janvier 2007 à 13 h 40 min #585508BOn concretement … faut faire QUOI pour avoir un cache qui marche … parce ke je comprends rien 🙂 Est il possible de resumer en 1 post (genre un tuto) les etapes ? 🙂
8 janvier 2007 à 13 h 52 min #585509Y’a rien à expliquer.
Le cache de WP est utilisé si ton site a une très forte influence.
Au quel cas, un certains nombre de fonction sont mis en cache. Les bloginfo() par exemple.Et cela à certaines condition serveurs :
– il faut que ENABLE_CACHE soit défini
– il faut que DISABLE_CACHE ne soit pas défini
– il faut que PHP soit en safe_mode offDans le PHP.ini
et le dossier wp-content/cache créé et en chmod 077
8 janvier 2007 à 14 h 33 min #585510AmO wrote:Y’a rien à expliquer.Le cache de WP est utilisé si ton site a une très forte influence.
Au quel cas, un certains nombre de fonction sont mis en cache. Les bloginfo() par exemple.Et cela à certaines condition serveurs :
– il faut que ENABLE_CACHE soit défini
– il faut que DISABLE_CACHE ne soit pas défini
– il faut que PHP soit en safe_mode offDans le PHP.ini
et le dossier wp-content/cache créé et en chmod 077
enable cache est defini
g bien mon cache en CHMOD 777
et php est bien en SAFE OFF …mais mon rep’ cache reste vide.
8 janvier 2007 à 15 h 37 min #585511Pas assez de visite 🙂
8 janvier 2007 à 16 h 16 min #585512Bon j’ai fini par abandonner wordpress :
J’avais intallé/customise un wordpress pour un pote pour qu’il présente la liste de ses films/livres preferes.
Il voulait des champs speciaux partout, alors j’ai integre un plugin qui gere les custom fields intelligemment.Et puis finalement c’etait super lourd et pas flexible et l’hebergement (chez free) est minable. Ajoutons a ca 50 requetes par affichage et ca fait une usine a gaz pour afficher un contenu assez simple finalement.
Résultat : J’ai code mon CMS en un WE, j’ai adapte le theme que je lui avait fait pour wordpress. Le tout marche sans base de donnees : Des fichiers XML bien formes.
Mon pote rentre ses fiches en les editant avec un bete editeur texte et il a le sentiment de beaucoup mieux controller ses donnees que quand elles sont perdues dans une DB. Le backup est aussi facilité, c’est plus rassurant.Il connaissait des rudiment de HTML et s’est tres vite fait aux fichiers XML (a part pour l’encoding UTF-8 que je lui ai impose). Tout ca roule tres bien et est bien plus reactif/flexible qu’un wordpress.
Je crois que j’installerais des trucs de ce genre a l’avenir pour des solutions professionnelles ou pour des potes.
C’est bien plus facile a maintenir.Pour l’instant je garde mon blog sous wordpress (enfin quand surf-town m’aura rendu mon domaine) juste pour les commentaires qui ne sont pas geres par ma solution XML. Mais j’ai l’intention de migrer.
Voila c’est tout.
Raphael
8 janvier 2007 à 16 h 29 min #585513AmO wrote:Pas assez de visite 🙂10 000 / jour c pas assez ? Pourtant à 50 requetes par page, je trouve qu’un cache aurait son interet 🙂
8 janvier 2007 à 19 h 36 min #585514cdvddt wrote:J’ai code mon CMS en un WE, j’ai adapte le theme que je lui avait fait pour wordpress. Le tout marche sans base de donnees : Des fichiers XML bien formes.
Mon pote rentre ses fiches en les editant avec un bete editeur texte et il a le sentiment de beaucoup mieux controller ses donnees que quand elles sont perdues dans une DB. Le backup est aussi facilité, c’est plus rassurant.Quand un soft est fait sur mesure, il y a toujours le sentiment de mieux contrôler ses données, c’est normal. Le coup du XML est une solution « rustique », maintenant si ça rassure ton ami, ça n’est pas forcément une mauvaise chose. C’est un choix particulier, mais il se défend.
Maintenant concernant le « mal programmé », je ne dirais rien ne m’étant pas plongé dans le code de WP. J’avoue d’ailleurs que je trouve PHP … fatiguant ! Je préfère un « vrai » langage que quelque chose qui en a voulu en devenir un, puis tente maintenant de devenir objet. Je ne dit pas qu’il n’a pas de qualités ou certains avantages, mais comme langage on a vu mieux, même side très belles choses ont été faites avec.
Pour revenir à la conclusion, le meilleur CMS (ou celui que l’on considère comme tel) aura toujours des restrictions et surtout des contraintes. Et si on veut du spécifique il faudra bien souvent développer un complément, et c’est à ce moment que l’on voit ce qu’un CMS a vraiment dans le ventre. Cela dit, WordPress n’est pas vraiment un CMS à mon sens, plutôt un cousin, ou à la limite une version spécialisée. Mais là chacun à sa définition 😉
8 janvier 2007 à 20 h 02 min #585458Pour le XML, pourquoi reinventer la roue : il y a Plumxl … et qui est tres bien pour ton ami : avec en + une admin a la WordPress qui cree les fichiers XML 🙂
9 janvier 2007 à 2 h 02 min #585515En effet
Je connaisais pas.Mais il manque quelque chose de crucial dans tous ces CMS ou en tout cas ça n’est pas immédiat : pouvoir définir des types personnalisables, avec intégration dans le thème et rédaction assistée ensuite.
Exemple, je défini le type screenshot, qui possède plusieurs ‘application’ ‘OS’ ‘image’ ‘rating’ ‘description’.
Et apres je rajoute des screenshots de manière simple.Tous les CMS partent du principe qu’on publie juste des posts. C’est très restrictif.
L’exemple de mon pote le montre. Il voulait publier des listes de livres, avec
plusieurs images des couvertures possibles + des citations + nom de l’auteur ….
bien sur on peut formatter tout ca à la main dans les posts. Mais on perd alors l’avantage de la séparation contenu/présentation.Avec ce que je lui ai fait, il peut décider de changer l’affichage d’un livre (ou de la liste) sans toucher ses données. Enfin je lui ferait … j’ai pas fait d’éditeur de thème Wysiwyg : Ca aussi c’est qq chose que j’aimerais bien voir dans les CMS.
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.