La maggior parte dei siti desidera comprimere i propri contenuti per risparmiare sulla larghezza di banda. Tuttavia, quando si tratta di server Apache che eseguono PHP ci sono due modi per farlo - with PHP o con apache. Quindi quale è più veloce o più facile sul tuo server?Comprimere il contenuto con PHP ob_start() vs Apache Deflate/Gzip?
Per esempio, in PHP corro la seguente funzione alla partenza delle mie pagine per abilitarlo:
/**
* Gzip compress page output
* Original function came from wordpress.org
*/
function gzip_compression() {
//If no encoding was given - then it must not be able to accept gzip pages
if(empty($_SERVER['HTTP_ACCEPT_ENCODING'])) { return false; }
//If zlib is not ALREADY compressing the page - and ob_gzhandler is set
if ((ini_get('zlib.output_compression') == 'On'
OR ini_get('zlib.output_compression_level') > 0)
OR ini_get('output_handler') == 'ob_gzhandler') {
return false;
}
//Else if zlib is loaded start the compression.
if (extension_loaded('zlib') AND (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== FALSE)) {
ob_start('ob_gzhandler');
}
}
Il other option è quello di utilizzare Apache deflate or gzip (sia quelle che sono very close). Per abilitarli puoi aggiungere qualcosa come questo al tuo file .htaccess.
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
Poiché PHP è un linguaggio di script (che deve essere caricato da PHP) Supporrei che il metodo apache sarebbe 1) più stabile e 2) più veloce. Ma le ipotesi non hanno molto senso nel mondo reale.
Dopotutto, si suppone che con le enormi finestre di supporto finanziario sia ... uh, non ci andremo.
+1: Non sto gestendo quasi il traffico che sei, ma preferisco anche che il server lo gestisca. Ci sono uno o due avvertimenti: alcuni tipi di file audio non devono essere compressi, o i lettori multimediali si soffocano su di essi. Questo include Windows Media Player con file mp3. – Powerlord
Anche se il problema era con Media Player 8, quindi potrebbe essere stato risolto già. – Powerlord
In genere comprime solo gli elementi del tipo text/*, quindi seleziono alcuni altri tipi di contenuto (come application/json) per ottenere il resto. – preinheimer