• Bannato User Attivo

    [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.


  • Bannato User Attivo

    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();
      }
      }


  • User Attivo

    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 😞


  • Bannato User Attivo

    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.


  • Super User

    meglio confrontare il codice di una versione 1.7 di joomla, sarà meglio ?
    ne hai una copia ?


  • Bannato User Attivo

    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....


  • User Attivo

    seguo con interesse questa discussione.... non ero a conoscenza che non funzionasse il gzip di joomla...

    Purtroppo nn so darvi nessun aiuto :arrabbiato:


  • Bannato User Attivo

    La community Joomla non mi ha dato nessuna risposta... :():


  • User Attivo

    @GabyZ said:

    La community Joomla non mi ha dato nessuna risposta... :():

    azz brutta roba


  • Moderatore

    Scusate se vado a riesumare una discussione vecchia ma volevo chiedervi se con joomla 1.5 le cose sono cambiate.

    Grazie


  • User Attivo

    Dalle prove che ho fatto mi sembra che ora funzioni egregiamente,
    riprova con i test consigliati all'inizio


  • Moderatore

    @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


  • User Newbie

    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.