2010-01-20 5 views
5

J'utilise CakePHP avec Apache2. Analysant mes pages avec l'outil PageSpeed ​​de Google, je trouve deux problèmes principaux. Le premier est que je devrais activer le gzipping du contenu, le second que je devrais tirer parti de la mise en cache du navigateur pour les images, les fichiers javascript et les fichiers CSS.Activer la compression Gzip et définir les durées d'expiration du cache dans CakePHP

J'ai plus ou moins trouvé comment remédier à cela, mais cela implique de changer mon fichier principal .htaccess. Cela ne ressemble pas vraiment à la manière de CakePHP, sinon rien parce que .htaccess fait partie de la distribution de CakePHP, et je dois me rappeler de le garder lors du changement de version. Y a-t-il une meilleure manière de faire cela?

Pour la première, je peux remédier en mettant

php_value output_buffering On 
php_value output_handler ob_gzhandler 

J'ai aussi essayé

<IfModule mod_deflate.c> 
    AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript application/x-javascript 
</IfModule> 

mais je ne vois pas de résultat avec PageSpeed.

Pour la deuxième, j'utilise maintenant

<IfModule mod_expires.c> 
    ExpiresActive On 
    ExpiresByType application/x-javascript A8640000 
    ExpiresByType text/javascript A8640000 
    ExpiresByType text/css A8640000 
    ExpiresByType image/png A8640000 
</IfModule> 

et il fonctionne en quelque sorte, bien que je reçois toujours le message « Les ressources cacheable suivantes ont une courte durée de vie de fraîcheur. Spécifiez une expiration au moins un mois à l'avenir pour les ressources suivantes: bla bla "

+0

utiliser ce code dans la fonction publique AppController beforeRender() { \t \t $ this-> response-> compress(); \t} – Meer

Répondre

3

Il n'y a pas de" CakePHP Way "quand il s'agit de la compression GZIP et de la mise en cache du navigateur. C'est définitivement plus un problème de configuration d'Apache. Vous devriez être en mesure de modifier les fichiers .htaccess dans votre dossier /app en toute impunité.

Lorsque CakePHP mise à jour/mise à niveau, il vous suffit de modifier les fichiers dans le dossier /cake. Vous ne devrez pas réactiver toutes les configurations de serveur dans les fichiers .htaccess du dossier /app, car tout restera le même.

Rappelez-vous toujours: tout ce qui se trouve dans le dossier /app est équitable.

+0

qu'en est-il de Cakephp :: response-> compress(); ?? en ajoutant public function beforeRender() { \t \t $ this-> réponse-> compress(); \t} – Meer

0
## EXPIRES CACHING ## 
<IfModule mod_expires.c> 
ExpiresActive On 
ExpiresByType image/jpg "access plus 1 year" 
ExpiresByType image/jpeg "access plus 1 year" 
ExpiresByType image/gif "access plus 1 year" 
ExpiresByType image/png "access plus 1 year" 
ExpiresByType text/css "access plus 1 month" 
ExpiresByType application/pdf "access plus 1 month" 
ExpiresByType text/x-javascript "access plus 1 month" 
ExpiresByType application/x-shockwave-flash "access plus 1 month" 
ExpiresByType image/x-icon "access plus 1 year" 
ExpiresDefault "access plus 30 days" 
</IfModule> 

Pour démarrer le module mod_expires en run ubuntu commandes suivantes

sudo a2enmod headers 
sudo a2enmod expires 
sudo service apache2 restart 
Questions connexes