28/03/2011, 11:02:20
Bon pour faire marcher mon "truc" il faut en tout premier point modifier vos DNS pour faire comprendre aux visiteur que static.votre_site.fr est en fait un alias faisant le même truc que www.votre_site.fr
j'ai résolu le soucis en ajoutant une ligne : (chez Gandi)
Nom Type Valeur Prio TTL
* A 109.xx.xx.xx 3 heures
Ensuite chez notre hébergeur (Cpanel) j'ai fait comprendre que tous les static.cmsmadesimple.fr devaient pointer dans le même répertoire que tous les www.cmsmadesimple.fr. Ainsi le visiteur demandant
www.cmsmadesimple.fr/image.gif et static.cmsmadesimple.fr/image.gif auront en retour la même image physiquement parlant.
Voilà pour la partie config du serveur. Maintenant concernant CmsMadeSimple.
En premier point : créer un fichier dans /plugins que l'on appellera function.cdn_url.php
son code :
C'est clairement un re-pompage intégrale du plugin root_url au passage comme vous pourrez le voir. J'ai simplement modifié ce qui m'arrangeait.
Ensuite il faut modifier le fichier de config en ajoutant une nouvelle ligne (uniquement une) en dessous de config['root_url'] = 'www.votresite.fr';
vous ajoutez donc
$config['cdn_url'] = 'http://static.votresite.fr';
Dernier point : dans tout le CSS de votre site, les images du gabarit, tout ce que vous souhaitez finalement, vous ajouterez cette balise devant les URL
[[cdn_url]]/uploads/image_bouton.png (ça c'est pour les feuilles de style)
{{cdn_url}}/lib/jquery.js (ça c'est pour un template)
Le principe est ultra basique et permet pourtant pas mal de choses :
* Aucun hack de fichier
* demain static.votresite.fr peut devenir www.un_autre_domaine.com sans poser de soucis
* l'administration de votre site n'est pas pénalisé puisqu'elle continuera à pointer vers les fichiers de votre hébergement, ceux là même accessibles soit par www soit par static
* Gain de notation Yslow : 78%->82% et Pagespeed : 84%->85%
* Gain de perf en terme de chargement client (aucun gain côté serveur bien évidement ce n'est pas le but)
Ce qui ne se fait pas / mal
* le pointage se fait sur un même répertoire, pas moyen d'externaliser les données sur un vrai cdn pour l'instant.
* Pour un site conséquent en terme d'image comme le notre, tout mettre sur static n'améliore pas toutes les notes puisqu'on reporte le soucis sur static (chez nous = 40 éléments sur un domaine = trop). Ce mauvais résultat est cependant nuancé par les cookies-free domains sur lequel nous restons énormément gagnant.
Use cookie-free domains : 80% \o/
Parallelize downloads across hostnames : 0%
* il reste des fichiers qui sont accompagnés de cookies : tout ce qui se trouve dans /tmp : le cache des fichiers css notamment. Je n'ai pas encore de solution.
Maintenant je réfléchit à une optimisation de la sorte : changer le principe de fonctionnement de la balise {cdn_url} pour faire ainsi :
{cdn_url} : renverra static.cmsmadesimple.fr
{cdn_url param='/upload/img.gif'} : renverra staticXXX.cmsmadesimple.fr
avec XXX un nombre situé dans un interval prédéfinit depuis le plugin (ou le fichier de config je ne sais pas encore).
L’intérêt est encore de diviser le nombre d’éléments par noms de domaine sans faire de l'aléatoire parce que si l'on fait aléatoire, les visiteurs rechargeront forcement les images (car url différentes) ce qui n'est pas notre but.
Je connais déjà l'algo pour faire ça, il me reste à trouver la manière la plus optimisée pour le faire ET dans le gabarit {cdn_url param='/upload/img.gif'} et dans le CSS [[cdn_url param='/upload/img.gif']]
j'ai résolu le soucis en ajoutant une ligne : (chez Gandi)
Nom Type Valeur Prio TTL
* A 109.xx.xx.xx 3 heures
Ensuite chez notre hébergeur (Cpanel) j'ai fait comprendre que tous les static.cmsmadesimple.fr devaient pointer dans le même répertoire que tous les www.cmsmadesimple.fr. Ainsi le visiteur demandant
www.cmsmadesimple.fr/image.gif et static.cmsmadesimple.fr/image.gif auront en retour la même image physiquement parlant.
Voilà pour la partie config du serveur. Maintenant concernant CmsMadeSimple.
En premier point : créer un fichier dans /plugins que l'on appellera function.cdn_url.php
son code :
Code :
<?php
#CMS - CMS Made Simple
#(c)2004 by Ted Kulp (wishy@users.sf.net)
#This project's homepage is: http://cmsmadesimple.sf.net
#
#This program is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 2 of the License, or
#(at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
function smarty_function_cdn_url($params, &$smarty)
{
global $gCms;
$config = $gCms->GetConfig();
return $config['cdn_url'];
}
function smarty_cms_help_function_cdn_url() {
echo lang('help_function_cdn_url');
}
function smarty_cms_about_function_cdn_url() {
?>
<p>Author: Ted Kulp<ted@cmsmadesimple.org></p>
<p>Version: 1.0</p>
<p>
Change History:<br/>
None
</p>
<?php
}
?>
C'est clairement un re-pompage intégrale du plugin root_url au passage comme vous pourrez le voir. J'ai simplement modifié ce qui m'arrangeait.
Ensuite il faut modifier le fichier de config en ajoutant une nouvelle ligne (uniquement une) en dessous de config['root_url'] = 'www.votresite.fr';
vous ajoutez donc
$config['cdn_url'] = 'http://static.votresite.fr';
Dernier point : dans tout le CSS de votre site, les images du gabarit, tout ce que vous souhaitez finalement, vous ajouterez cette balise devant les URL
[[cdn_url]]/uploads/image_bouton.png (ça c'est pour les feuilles de style)
{{cdn_url}}/lib/jquery.js (ça c'est pour un template)
Le principe est ultra basique et permet pourtant pas mal de choses :
* Aucun hack de fichier
* demain static.votresite.fr peut devenir www.un_autre_domaine.com sans poser de soucis
* l'administration de votre site n'est pas pénalisé puisqu'elle continuera à pointer vers les fichiers de votre hébergement, ceux là même accessibles soit par www soit par static
* Gain de notation Yslow : 78%->82% et Pagespeed : 84%->85%
* Gain de perf en terme de chargement client (aucun gain côté serveur bien évidement ce n'est pas le but)
Ce qui ne se fait pas / mal
* le pointage se fait sur un même répertoire, pas moyen d'externaliser les données sur un vrai cdn pour l'instant.
* Pour un site conséquent en terme d'image comme le notre, tout mettre sur static n'améliore pas toutes les notes puisqu'on reporte le soucis sur static (chez nous = 40 éléments sur un domaine = trop). Ce mauvais résultat est cependant nuancé par les cookies-free domains sur lequel nous restons énormément gagnant.
Use cookie-free domains : 80% \o/
Parallelize downloads across hostnames : 0%
* il reste des fichiers qui sont accompagnés de cookies : tout ce qui se trouve dans /tmp : le cache des fichiers css notamment. Je n'ai pas encore de solution.
Maintenant je réfléchit à une optimisation de la sorte : changer le principe de fonctionnement de la balise {cdn_url} pour faire ainsi :
{cdn_url} : renverra static.cmsmadesimple.fr
{cdn_url param='/upload/img.gif'} : renverra staticXXX.cmsmadesimple.fr
avec XXX un nombre situé dans un interval prédéfinit depuis le plugin (ou le fichier de config je ne sais pas encore).
L’intérêt est encore de diviser le nombre d’éléments par noms de domaine sans faire de l'aléatoire parce que si l'on fait aléatoire, les visiteurs rechargeront forcement les images (car url différentes) ce qui n'est pas notre but.
Je connais déjà l'algo pour faire ça, il me reste à trouver la manière la plus optimisée pour le faire ET dans le gabarit {cdn_url param='/upload/img.gif'} et dans le CSS [[cdn_url param='/upload/img.gif']]