2010-01-20 7 views
5

Sto usando CakePHP con Apache2. Analizzando le mie pagine con lo strumento PageSpeed ​​di Google, trovo due problemi principali. Il primo è che dovrei abilitare il gzipping dei contenuti, il secondo che dovrei sfruttare il caching del browser per immagini, file javascript e css.Abilita compressione Gzip e imposta i tempi di scadenza della cache in CakePHP

Ho più o meno trovato come rimediare a ciò, ma comporta il cambio del mio file .htaccess principale. Questo non sembra davvero il modo CakePHP, se non altro perché quello .htaccess fa parte della distribuzione di CakePHP e devo ricordarmi di tenerlo quando cambi la versione. C'è un modo migliore per farlo?

Per la prima, posso rimediare mettendo

php_value output_buffering On 
php_value output_handler ob_gzhandler 

Ho anche provato

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

ma non ho visto nessun risultato con PageSpeed.

Per il secondo io uso

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

e che tipo di opere, anche se ho ancora il messaggio "Le seguenti risorse memorizzabili nella cache hanno una durata di aggiornamento breve. Specifica una scadenza di almeno un mese nel futuro per le seguenti risorse: bla bla "

+0

utilizzare questo codice in AppController funzione pubblica BeforeRender() { \t \t $ this-> response-> compress(); \t} – Meer

risposta

3

Non c'è" CakePHP Way "quando si parla di compressione GZIP e cache del browser. Questo è sicuramente più un problema di configurazione di Apache. Dovresti essere in grado di modificare i file .htaccess nella tua cartella /app con impunità.

Quando si aggiorna/aggiorna CakePHP, è sufficiente modificare i file nella cartella /cake. Non sarà necessario riattivare alcuna configurazione del server nei file .htaccess della cartella /app, poiché tutto rimarrà lo stesso.

Ricordare sempre: qualsiasi cosa nella cartella /app è un gioco equo.

+0

cosa dire di Cakephp :: response-> compress(); ?? aggiungendo public function beforeRender() { \t \t $ this-> response-> 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> 

Per avviare il modulo mod_expires a eseguire Ubuntu seguente comandi

sudo a2enmod headers 
sudo a2enmod expires 
sudo service apache2 restart