[Système multilingue] Mise en cache des pages traduites - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [Système multilingue] Mise en cache des pages traduites (/showthread.php?tid=2613) |
[Système multilingue] Mise en cache des pages traduites - Sephi-Chan - 29-05-2008 Salut à tous, Depuis la reprise active de Seelies — que l'on veut multilingue — je me demande comment gérer le cache des pages traduites, car j'ai du mal à imaginer une traduction à la volée à chaque chargement de page. Le système utilise un tableau de localisation (généré à partir d'un objet JSON, pour faciliter la traduction par de tierces personnes) appelé $_localisation qu'une fonction utilise pour traduire les blocs de texte de chaque page. Ce tableau contient les traductions d'une langue unique pour chaque page du site. Voici un exemple (bien qu'en pratique, je n'appelle pas ce tableau ainsi) : Code PHP :
Ma question est donc : comment mettre en cache les pages générées ainsi. J'ai quelques pistes mais j'attends les vôtres pour faire mon choix. Sephi-Chan RE: [Système multilingue] Mise en cache des pages traduites - Studio Gamboo - 29-05-2008 Salut Sephi, Alors je commencerai d'abord par une petite remarque, ne vaux mieux t-il mettre en cache les clés traduite plutôt que des pages tout entières ? Moi je procède de cette manière : A chaque fois qu'une clé est demandé, j'ouvre mon fichier xml, je renvoi la clé traduite et je stocke le résultat dans la ram. Ainsi au bout de quelques pages, le xml n'est plus utilisé, toutes les requêtes vont directement puiser dans la ram de la machine (grand gain de vitesse). Au niveau des solutions de cache, j'en connais 3 assez pratiques et simple : - APC (http://fr.php.net/apc) : met en cache des variables dans la ram de la machine, pour l'instant en extension ça sera intégré directement dans php6. Ca fait également office de cache opcode. Rapide et trés simpe. - Memcache (http://www.jeuweb.org/board/showthread.php?tid=3440) : met en cache également dans la ram, et permet de créer des "pools" de serveur pour de grande donnée. Rapide également ^^ - Les fichiers , bon la je te fait pas un dessin XD RE: [Système multilingue] Mise en cache des pages traduites - Sephi-Chan - 29-05-2008 Salut Gamboo, Mettre les clés en cache plutôt que les pages me convient tout aussi bien, ça me permet en plus de de ne pas avoir de soucis quand un joueur se connecte ou se déconnecte, car le contenu des pages n'est alors pas le même (j'utilise un menu commun à tout le site, le contenu des sous menu change ensuite, à la manière de Mac OS). Merci pour ces réponses, je m'étais intéressé à la mise en cache sur le serveur, et j'ai récemment relu ton article sur Memcache, que je vais essayer d'utiliser. APC et/ou Memcache sont-ils généralement installés sur les serveurs mutualisés ? Pour tester cela en local, il va falloir que je me renseigne sur la façon d'installer les paquets PECL pour PHP sur Mac OS X… Je ne l'ai encore jamais fais. Sephi-Chan RE: [Système multilingue] Mise en cache des pages traduites - Studio Gamboo - 29-05-2008 Apc et Memcache ne sont je pense jamais installé sur des mutualisés. Pour ce qui est de MAC OS X, je n'ai jamais réussi à y faire fonctionner memcache (cela nécessite un démon), par contre APC est compris dans MAMP, donc très facile à utiliser RE: [Système multilingue] Mise en cache des pages traduites - Sephi-Chan - 29-05-2008 Studio Gamboo a écrit :Apc et Memcache ne sont je pense jamais installé sur des mutualisés.Déjà et d'une, c'est toi le démon. De deux, exact pour Mamp ! Citation :extension=apc.so Merci, je reviens quand j'aurais testé tout ça, après mon cours de VB.net… :triste: Sephi-Chan RE: [Système multilingue] Mise en cache des pages traduites - Studio Gamboo - 29-05-2008 Tient je te colle pour info et brut de décoffrage ma classe de cache que j'utilise, elle permet d'utiliser soit apc, soit des fichiers pour l'instant donc voila. Si t'a des remarques ou des corrections n'hésite(z) pas Code PHP :
RE: [Système multilingue] Mise en cache des pages traduites - Sephi-Chan - 29-05-2008 Merci pour la classe ! Quelques remarques :
En tout cas, merci beaucoup. Sephi-Chan RE: [Système multilingue] Mise en cache des pages traduites - Ren Nelos - 30-05-2008 +1 J'ajouterais que ta méthode magique __set() ne différencie pas les variables public des variables private. D'autant que je ne comprends pas pourquoi implémenter la méthode __set() et faire derrière un setMedia()... Explique moi s'il te plait Cordialement, |