- Home
- Categorie
- Coding e Sistemistica
- Joomla!
- [1.0] Abilitare REALMENTE la compressione GZIP con Joomla
-
[1.0] Abilitare REALMENTE la compressione GZIP con Joomla
Salve, molti di voi sapranno che la compressione GZIP serve (se installato il mod_gzip per Apache) a comprimere le pagine php risparmiando il 70% del peso finale della pagina letta dal browser...
Mi direte: Ma ci sei o ci fai!? Vai in "Impostazioni Globali" di Joomla e a "Server" abilita Gzip... beh non è proprio così semplice e non sono l'unico a sbatterci la testa.
Facciamo la prova:
**1) **Disabilitate GZIP dal pannello Joomla e usate http://www.websiteoptimization.com/ per verificare la grandezza della pagina guardate la voce "HTML_SIZE" in basso. Riabilitate GZIP e rieseguite il test..sorpresa! La pagina varia di pochissimi byte o non cambia.**2)**Adesso verifichiamo la pagina con http://www.port80software.com/ (Il più affidabile) e adesso con http://www.gidnetwork.com/
Il primo conferma la compressione non funzionante, il secondo dice che è abilitata (uno dei pochi). Però se noi stessi puliamo la cache e visualizziamo le pagine con GZIP apparente e non, non varia nulla.Conclusione: Gzip NON funzionante su Joomla.
Il codice che avvia la compressione lo troviamo in includes/joomla.php, dalla riga 4028 dove troviamo:
/**
- Initialise GZIP
*/
function initGzip() {
global $mosConfig_gzip, $do_gzip_compress;ecc ecc....
Variando $do_gzip_compress = FALSE in $do_gzip_compress = TRUE e abilitando GZIP dalla configurazione tutti i tester daranno la pagina come compressa... ma visualizzandola con tutti i browser riceveremo una serie di codici senza senso su tutte le pagine comprese /administrator
Come facciamo a risolvere un problema di VITALE importanza!?
Segnalo il thread dove altro hanno lo stesso problema: http://forum.joomla.org/index.php?topic=45289.msg247964
Il manuale della compressione è qui, ho provato ad inserire i codici nel template, index.php della root e in joomla.php con esito negativo.
- Initialise GZIP
-
Dai ragazzi... non è assolutamente un fattore di poco conto.
Ecco tutto il codice responsabile:
/**
-
Initialise GZIP
*/
function initGzip() {
global $mosConfig_gzip, $do_gzip_compress;$do_gzip_compress = FALSE;
if ($mosConfig_gzip == 1) {
$phpver = phpversion();
$useragent = mosGetParam( $_SERVER, 'HTTP_USER_AGENT', '' );
$canZip = mosGetParam( $_SERVER, 'HTTP_ACCEPT_ENCODING', '' );$gzip_check = 0; $zlib_check = 0; $gz_check = 0; $zlibO_check = 0; $sid_check = 0; if ( strpos( $canZip, 'gzip' ) !== false) { $gzip_check = 1; } if ( extension_loaded( 'zlib' ) ) { $zlib_check = 1; } if ( function_exists('ob_gzhandler') ) { $gz_check = 1; } if ( ini_get('zlib.output_compression') ) { $zlibO_check = 1; } if ( ini_get('session.use_trans_sid') ) { $sid_check = 1; } if ( $phpver >= '4.0.4pl1' && ( strpos($useragent,'compatible') !== false || strpos($useragent,'Gecko') !== false ) ) { // Check for gzip header or northon internet securities or session.use_trans_sid if ( ( $gzip_check || isset( $_SERVER['---------------']) ) && $zlib_check && $gz_check && !$zlibO_check && !$sid_check ) { // You cannot specify additional output handlers if // zlib.output_compression is activated here ob_start( 'ob_gzhandler' ); return; } } else if ( $phpver > '4.0' ) { if ( $gzip_check ) { if ( $zlib_check ) { $do_gzip_compress = TRUE; ob_start(); ob_implicit_flush(0); header( 'Content-Encoding: gzip' ); return; } } }
}
ob_start();
}
/**
-
Perform GZIP
/
function doGzip() {
global $do_gzip_compress;
if ( $do_gzip_compress ) {
/*
*Borrowed from php.net!
*/
$gzip_contents = ob_get_contents();
ob_end_clean();$gzip_size = strlen($gzip_contents); $gzip_crc = crc32($gzip_contents); $gzip_contents = gzcompress($gzip_contents, 9); $gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4); echo "\x1f\x8b\x08\x00\x00\x00\x00\x00"; echo $gzip_contents; echo pack('V', $gzip_crc); echo pack('V', $gzip_size);
} else {
ob_end_flush();
}
}
-
-
effettivamente in Joomla 1.0.11 e 1.0.12 anche a me la verifica da quei siti non da esito positivo. mentre su dei vecchi siti con Mambo (versioni abbastanza vecchie ... non ho installazioni recenti) va perfettamente ... mah
-
Infatti la compressione smise di funzionare realmente con la vers 1.0.8 di Joomla mentre Mambo non ha problemi.:(
Do uno sguardo al codice Mambo così magari ne veniamo fuori.
-
meglio confrontare il codice di una versione 1.7 di joomla, sarà meglio ?
ne hai una copia ?
-
Il codice in joomla.php è uguale per Joomla 1.0.11, Joomla 1.0.7 e Mambo 6.2. Solo Mambo però funziona senza problemi, il problema quindi è da ricercarsi altrove, nel topic di joomla.org il problema sembra comparire con la 1.0.7, ho aperto un topic tempo fa perchè l'altro era troppo vecchio ma ovviamente nessuno ha risposto....
-
seguo con interesse questa discussione.... non ero a conoscenza che non funzionasse il gzip di joomla...
Purtroppo nn so darvi nessun aiuto
-
La community Joomla non mi ha dato nessuna risposta... :():
-
-
Scusate se vado a riesumare una discussione vecchia ma volevo chiedervi se con joomla 1.5 le cose sono cambiate.
Grazie
-
Dalle prove che ho fatto mi sembra che ora funzioni egregiamente,
riprova con i test consigliati all'inizio
-
@asteron said:
Dalle prove che ho fatto mi sembra che ora funzioni egregiamente,
riprova con i test consigliati all'inizio
ma sul primo post è scritto che se si apportano delle modifiche appaiono delle scritte di errore
-
Sui miei siti Joomla 1.5 e Joomla 2.5 la compressione GZIP sembra funzionare correttamente. L'ho analizzata con gli strumenti che ha linkato GabyZ e viene sempre mostrata (o meno) la sua presenza. Comunque anche ad "occhio nudo" si notano differenze di caricamento quando la compressione sta lavorando.
Ciao, Marco.