elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Comunicaciones
| |-+  Redes
| | |-+  [Apache] Problemas para servir contenido comprimido .gz ! (solved)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Apache] Problemas para servir contenido comprimido .gz ! (solved)  (Leído 7,923 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
[Apache] Problemas para servir contenido comprimido .gz ! (solved)
« en: 10 Agosto 2011, 04:53 am »

Buenas.

Quiero implementar la opcion de servir contenido comprimido para ahorrar ancho de banda y alijerar el peso de mi sitio, lo primero la idea es que los scripts JS y estilo CSS se sirvan comprimidos y se puedan interpretar.

Me refiero a algo asi:

Código:
# css
<link rel="stylesheet" type="text/css" href="http://misitio.com/estilos/style.css.gz">

# javascript
<script type="text/javascript" src="http://misitio.com/js/script.js.gz"></script>

Hasta este punto he implementado algunas cosas pero mi servidor no consigue interpretar los *.gz, vaya, es como si no interpretara el style CSS y el sitio se ve todo mal.

Lo que he implementado es:

Habilitar mod_deflate.so - Por defecto esta instalado.
OJO, en Apache menor a 2.0 se usaba mod_gzip.so, ahora en 2.0 para arriba es mod_deflate.so
Código:
shell# cd /etc/httpd/modules/
shell# ls -l
...
..
mod_deflate.so

Configurando mod_deflate.so
Código:
shell# cd /etc/httpd/conf.d/
shell# nano deflate.conf
AddOutputFilterByType DEFLATE text/html text/plain text/css application/x-javascript

Habilitando interpretacion de *.gz en httpd.conf [Ver httpd.conf completo]
Código:
shell# nano /etc/httpd/conf/httpd.conf
ForceLanguagePriority Prefer Fallback
AddDefaultCharset UTF-8
AddType application/x-tar .tgz
AddEncoding x-compress .Z
AddEncoding x-gzip .gz .tgz
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddHandler type-map var
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

Configurar php.ini para habilitar zlib compression
Código:
shell# cat /etc/php.ini | grep zlib
zlib.output_compression = On

Reiniciar apache
Código:
shell# /etc/init.d/httpd restart

Subo los estilo.css.gz, script.js.gz, los invoco tal cual en el HTML, y al refrescar el sitio sale sin los estilos. en pocas palabras, no se interpreta.

Les dejo la trama recepcionada para que verifiquen que el Header de Encoding esta en gzip. Sigo sin entender proque no funciona :(.

GET a turundus.net
Código:
Date	Wed, 10 Aug 2011 02:54:00 GMT
Server Apache/2.2.3 (CentOS)
X-Powered-By PHP/5.1.6
Set-Cookie PHPSESSID=klsdjklfjsmi_session_msdisidmf; path=/
Expires Thu, 11 Aug 2011 02:54:00 GMT
Cache-Control public, max-age=3600
Pragma no-cache
Last-Modified Wed, 10 Aug 2011 02:54:00 GMT
Vary Accept-Encoding
Content-Encoding gzip
Content-Length 2959
Connection close
Content-Type text/html; charset=UTF-8


« Última modificación: 11 Agosto 2011, 23:21 pm por Diabliyo » En línea

madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



Ver Perfil WWW
Re: [Apache] Problemas para servir contenido comprimido .gz !
« Respuesta #1 en: 10 Agosto 2011, 11:57 am »

Quiero implementar la opcion de servir contenido comprimido para ahorrar ancho de banda y alijerar el peso de mi sitio, lo primero la idea es que los scripts JS y estilo CSS se sirvan comprimidos y se puedan interpretar.
Me refiero a algo asi:
Código:
# css
<link rel="stylesheet" type="text/css" href="http://misitio.com/estilos/style.css.gz">

# javascript
<script type="text/javascript" src="http://misitio.com/js/script.js.gz"></script>

Las hojas de estilo CSS y los scripts javascript se cargan en el navegador del cliente, no tiene nada que ver con el servidor. Por lo que no deberían tener extensión .gz.

Hay algunas herramientas online que te permiten comprobar si tu servidor envía el contenido comprimido:

_HTTP Compression
_Compression / Deflat / Gzip test tool

Te interesará saber, que con PHP también puede comprimir los datos que se envía, mediante ZLib (Explicación).

Resumiendo, el servidor hace bien la compresión de los datos, el problema es el cliente/navegador, porque no carga ni las CSS ni los JS (al haberlos comprimido).


En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: [Apache] Problemas para servir contenido comprimido .gz !
« Respuesta #2 en: 10 Agosto 2011, 18:39 pm »

Las hojas de estilo CSS y los scripts javascript se cargan en el navegador del cliente, no tiene nada que ver con el servidor. Por lo que no deberían tener extensión .gz.

Hay algunas herramientas online que te permiten comprobar si tu servidor envía el contenido comprimido:

_HTTP Compression
_Compression / Deflat / Gzip test tool

Te interesará saber, que con PHP también puede comprimir los datos que se envía, mediante ZLib (Explicación).

Resumiendo, el servidor hace bien la compresión de los datos, el problema es el cliente/navegador, porque no carga ni las CSS ni los JS (al haberlos comprimido).


Buenas...

Gracias por las recomendaciones...

Me creeras loco men, pero si se pueden interpretar como style.css.gz, y es un servicio mismo del apache o del php (nose)... pero de que se puede, se puede, y mejora un buen el peso del sitio y la rapidez. Como ejemplo habilite la modalidad en otro sitio que tengo, es: http://lab.sie-group.net... Mirate el codigo fuente html y observa como esta llamado el estilo.css

Ahora diras.. "pues hazlo"... El punto es que mi Blog (lab.sie-group.net) esta sobre un servidor GoDaddy, vaya, YO NO gestiono el server, ellos lo configuran.

Y para mi otro sitio tengo un Servidor Dedicado, así que, no hayo como activar esa opción :(.

Cabe resaltar que en el servidor de GoDaddy cuando yo llamo la URL: http://misitio.com/mitemplate/estillo.css.gz , me resulta el GZ descomprimido.

Y cuando en mi servidor dedicado visito la URL: http://miserver.com/mitemplate/estilo.css.gz, me resulta el codigo comprimido en GZ, vaya, veo puros garabatos !

Saludos !
« Última modificación: 10 Agosto 2011, 18:42 pm por Diabliyo » En línea

madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



Ver Perfil WWW
Re: [Apache] Problemas para servir contenido comprimido .gz !
« Respuesta #3 en: 10 Agosto 2011, 22:10 pm »

No siempre hace falta poner la extensión .gz, ya que en teoría, la compresión-descompresión se hace en segundo plano.
 
En tu sitio (lab.sie-group) al crear la hoja de estilos le pusiste tú esa extensión? O la agrega el servidor de forma dinámica?

En teoría no hace falta ponerle la extensión .gz si en las cabeceras HTTP le envías:

Código:
 Accept-Encoding: gzip

Los de GoDaddy creo que hacen algo así:

Código
  1. <?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start(); ?>

Fuente: Compressing Web Pages for Faster Load Times.

Mediante .htaccess también puedes detectar si el navegador del usuario tiene GZip:

Código:
<files *.js.gz>
  AddType "text/javascript" .gz
  AddEncoding gzip .gz
</files>
<files *.css.gz>
  AddType "text/css" .gz
  AddEncoding gzip .gz
</files>
RewriteEngine on
#Check to see if browser can accept gzip files.
ReWriteCond %{HTTP:accept-encoding} gzip
RewriteCond %{HTTP_USER_AGENT} !Safari
#make sure there's no trailing .gz on the url
ReWriteCond %{REQUEST_FILENAME} !^.+\.gz$
#check to see if a .gz version of the file exists.
RewriteCond %{REQUEST_FILENAME}.gz -f
#All conditions met so add .gz to URL filename (invisibly)
RewriteRule ^(.+) $1.gz [QSA,L]

O si vas a incluir los recursos (css y js) con la extensión .gz, lo más probable es que se lo tengas que indicar al servidor, al igual que arriba, mediante .htaccess:

Código:
AddEncoding gzip .gz
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{HTTP_USER_AGENT} !Safari
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)$ $1.gz [QSA,L]

Otro ejemplo de configuración del .htaccess es:

Código:
# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

# Or, compress certain file types by extension:
<Files *.html>
SetOutputFilter DEFLATE
</Files>

Si te fijas en los comentarios, le estás indicando que sirva "comprimidos" todos esos tipos MIME.
En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: [Apache] Problemas para servir contenido comprimido .gz !
« Respuesta #4 en: 10 Agosto 2011, 22:23 pm »

No siempre hace falta poner la extensión .gz, ya que en teoría, la compresión-descompresión se hace en segundo plano.
 
En tu sitio (lab.sie-group) al crear la hoja de estilos le pusiste tú esa extensión? O la agrega el servidor de forma dinámica?

En teoría no hace falta ponerle la extensión .gz si en las cabeceras HTTP le envías:

Código:
 Accept-Encoding: gzip

Los de GoDaddy creo que hacen algo así:

Código
  1. <?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start(); ?>

Creo que aun tomas bien el dato que te quiero decir, yo entiendo al habilitar Encoding gzip el sitio se envia compreso y apache hace todo el proceso, pero cuando yo me refiero a los script.js y script.css me refieo a comprimir los CSS y JS antes de subirlos al server por eso toman la extensión gz. Vaya:

Código:
micasa# cd /miproyecto/tema/css/
micasa# cp estilo.css estilo.css.back
misaca# gzip estilo.css
micasa# mv estilo.css.back estilo.css
micasa# ls -l
estilo.css
estilo.css.gz

El peso del estilo.css.gz (80kb) es menos de la mitad de estilo.css (200kb), asi que el que subo es estilo.css.gz, pero obviamente al estar compreso e intentar abrirlo con un editor se ven puros garabatos.

Despues lo subo al server de GoDaddy (lab.sie-group.net) y en el HTML invoco el estilo.css.gz, y sucede que en vez de mostrar los garabatos el mismos server GoDaddy lo traduce a legible.

El punto aqui es que se reduce drasticamente el peso del sitio y la rapidez con que se visualiza el sitio.

Lo demas que me dijiste segun entiendo es para que reconozca el GZ y lo asocie, pero deja lo implemento y subo los archivos compresos y haber si funciona.

Por cierto, en el test de compresion http://www.gidnetwork.com/tools/gzip-test.php me indica que SI esta comprimido el sitio....

Saludos !



Otro ejemplo de configuración del .htaccess es:

Código:
# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

# Or, compress certain file types by extension:
<Files *.html>
SetOutputFilter DEFLATE
</Files>

Esta lineas si las uso, pero en una sola en el mod_deflate asi:
Código:
shell# cat /etc/http/conf.d/deflate.conf
AddOutputFilterByType DEFLATE text/html text/plain text/css application/x-javascript



No siempre hace falta poner la extensión .gz, ya que en teoría, la compresión-descompresión se hace en segundo plano.
 
En tu sitio (lab.sie-group) al crear la hoja de estilos le pusiste tú esa extensión? O la agrega el servidor de forma dinámica?

En teoría no hace falta ponerle la extensión .gz si en las cabeceras HTTP le envías:

Código:
 Accept-Encoding: gzip

Los de GoDaddy creo que hacen algo así:

Código
  1. <?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start(); ?>

Fuente: Compressing Web Pages for Faster Load Times.

Mediante .htaccess también puedes detectar si el navegador del usuario tiene GZip:

Código:
<files *.js.gz>
  AddType "text/javascript" .gz
  AddEncoding gzip .gz
</files>
<files *.css.gz>
  AddType "text/css" .gz
  AddEncoding gzip .gz
</files>
RewriteEngine on
#Check to see if browser can accept gzip files.
ReWriteCond %{HTTP:accept-encoding} gzip
RewriteCond %{HTTP_USER_AGENT} !Safari
#make sure there's no trailing .gz on the url
ReWriteCond %{REQUEST_FILENAME} !^.+\.gz$
#check to see if a .gz version of the file exists.
RewriteCond %{REQUEST_FILENAME}.gz -f
#All conditions met so add .gz to URL filename (invisibly)
RewriteRule ^(.+) $1.gz [QSA,L]

O si vas a incluir los recursos (css y js) con la extensión .gz, lo más probable es que se lo tengas que indicar al servidor, al igual que arriba, mediante .htaccess:

Código:
AddEncoding gzip .gz
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{HTTP_USER_AGENT} !Safari
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)$ $1.gz [QSA,L]

Otro ejemplo de configuración del .htaccess es:

Código:
# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

# Or, compress certain file types by extension:
<Files *.html>
SetOutputFilter DEFLATE
</Files>

Si te fijas en los comentarios, le estás indicando que sirva "comprimidos" todos esos tipos MIME.


Te confirmo que no funciona, vaya el sitio SI ESTA COMPRESO (eso lo se porque siempre lo ha estado desde que acitve mod_deflate), pero al pasarle los estilo.css y script.js comprimidos estos no se interpretan al visitar el sitio.

Saludos !
« Última modificación: 11 Agosto 2011, 00:20 am por madpitbull_99 » En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: [Apache] Problemas para servir contenido comprimido .gz !
« Respuesta #5 en: 10 Agosto 2011, 23:31 pm »

He puesto un test.php en donde se invoca un codigo.css.gz, alguien me ayude a que se pueda descomprimir al momento de entrar al sitio y pueda verse el estilo ?

Enlace: http://turundus.net/test.php
En línea

madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



Ver Perfil WWW
Re: [Apache] Problemas para servir contenido comprimido .gz !
« Respuesta #6 en: 11 Agosto 2011, 00:22 am »



Se ve perfectamente. Y en el código fuente me sale:


Código
  1. <head>
  2. <title>Sitio compromido al maximo</title>
  3. <meta http-equiv="Vary" content="Accept-Encoding" />
  4. <link rel="stylesheet" type="text/css" href="codigo.cgz" />
  5. </head>
  6.  
  7. <body>
  8. <div id="caja">Caja en el centro con background amarillo y borde negro.</div>
  9.  
  10. </body>
  11. </html>

Por lo tanto, lo está descomprimiendo bien.
En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: [Apache] Problemas para servir contenido comprimido .gz !
« Respuesta #7 en: 11 Agosto 2011, 15:58 pm »



Se ve perfectamente. Y en el código fuente me sale:


Código
  1. <head>
  2. <title>Sitio compromido al maximo</title>
  3. <meta http-equiv="Vary" content="Accept-Encoding" />
  4. <link rel="stylesheet" type="text/css" href="codigo.cgz" />
  5. </head>
  6.  
  7. <body>
  8. <div id="caja">Caja en el centro con background amarillo y borde negro.</div>
  9.  
  10. </body>
  11. </html>

Por lo tanto, lo está descomprimiendo bien.

Despues de colocar el enlace, horas despues quedo solucionado, mas tarde pongo la solucion...
En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: [Apache] Problemas para servir contenido comprimido .gz !
« Respuesta #8 en: 11 Agosto 2011, 23:21 pm »

Les dejo la solución explicada desde 0s.

---> Descargar Manual PDF <----

Concepto


Cuando realizamos un sitio web y lo tenemos funcionando al 100% por lo general nuestro sitio llega a pesar mas de 1, 2, 3 o hasta 10Kb, esto resulta muy pesado cuando tenemos un servidor dedicado, ya que tenemos una cuota limite de consumo del ancho de banda, por lo cual es el momento en que debemos empezar a pensar en economizar codigo, disminuir tama~o del sitio y asu vez hagilizar el despliegue del sitio,he aqui donde tocamos el tema de Servidor Contenido Comprimido.

La estrategia solo es valida para Seridores Dedicados o un Servidor Casero, ya que tocaremos la configuracion del apache y del php. Sobre mod_rewrite pues ya saber que pueden definirla desde su .htacces.

Consejos

Si usan un servidor dedicado o servidor casero no se les ocurra poner configuraciones en el HTACCESS, ya que es mas rapido la digestion y procesamiento de las reglas mod_rewrite desde el <VirtualHost> (donde declaramos nuestro dominio en httpd.conf). Cuestiones de renderizado ;)

Antes de seguir con el manual es bueno primero vean cuando pesa su web y lo rapido con que se despliega, asi cuando implementen esto vean los resultados. Les dejo una implementacion para verificar el renderizado del sitio y tiempo:

Código:
<?php
# funcion para verificar el tiempo de carga
function tiempodecarga()
 {
 $tm= explode( " ", microtime() );
 return ($tm[1]+$tm[0]);
 }

$render= tiempodecarga(); # tiempo actual
echo '<html>
<head>
</head>

<body>';

 $render= tiempodecarga()-$render;
 $d= 212;
 echo 'Tiempo de Carga: '. number_format($render,2). ' |
 Peso Web: ';
 echo number_format( (ob_get_length()+$d)/1024, 2);
 echo ' kb';
 unset($render);

echo '</body>
</html>';
?>

En misitio.com tenia los siguientes tiempos....

Antes de la implementacion...
Código:
Tiempo de Carga: 1.50 | Peso Web: 14.43 kb

Despues de la implementacion...
Código:
Tiempo de Carga: 1.04 | Peso Web: 0.23 kb

Configurando PHP

Con PHP no es mucho rollo, solamente editamos el php.ini para habilitar la compresión usando zlib. Les mencionare solamente las lineas como deben estar, asi que, si ustedes las ven comentadas, entonces descomentarlas...

Código:
shell# catwc /etc/php.ini |grep zlib
zlib.output_compression = On
zlib.output_handler =

Configurando APACHE

Es importante mencionar que en Apache versión mayor o igual a 2.0 se utiliza mod_deflate y en versiones menores a 2.0 se usa mod_gzip. En mi caso utilizo la versión reciente (solo un loco pone una desactualizada), asi que les planteare todo sobre mod_deflate.

Primero dentro de nuestro <VirtualHost> debemos activar la encodeo con gzip y declarar los tipos de formatos. OJO, yo pongo todo en el <VirtualHost> porque solo me interesa para mi espacio, el de mis clientes pues ya deberan pedirlo o simplemente debe dar mas $$ (gajes de Hosting Básico y otros niveles xD).

El VirtualHost
Código:
shell# cat /etc/httpd/conf/httpd.conf

<VirtualHost misitio.net:80>
 ServerAdmin contacto@sie-group.net
 DocumentRoot /home/misitio/public_html
 ServerName misitio.net
 ServerAlias www.misitio.net
 ErrorLog logs/misitio-net-error_log
 CustomLog logs/misitio-net-access_log common
 <Directory "/home/misitio/public_html">
 Options +FollowSymLinks
 Order allow,deny
 Allow from all
 AllowOverride All
 RewriteEngine on
 AddEncoding x-gzip .jgz .cgz .gz
 AddType text/css .css
 AddType text/css .cgz
 AddType application/x-javascript .js
 AddType application/x-javascript .jgz
#................
#................ MIS REGLAS RewriteRule ....
#................
</VirtualHost>

Ahora explicamos las lineas:

Código:
# estas son MIME types
#

# indicamos que toda extensión .css debe tratarse como contenido tipo text/css.
AddType text/css .css

# indicamos que toda extensión .cgz debe tratarse como contenido tipo text/css,
# ya que es CSS Comprimido.
AddType text/css .cgz

# indicamos que toda extensión .js debe tratarse como contenido tipo application/x-javascript
AddType application/x-javascript .js

# indicamos que toda extensión .jgz debe tratarse como contenido tipo application/x-javascript, ya que
# son script JS comprimidos
AddType application/x-javascript .jgz

El Encodeado de los tipos:
Código:
# aqui indicamos que vamos a encodear con el compresor GZIP los tipos: .gz, .cgz y .jsz
AddEncoding x-gzip .jgz .cgz .gz

Mucho OJO, si no tenemso estas lineas, lo que sucedera es que al subir nuestros CSS o JS compresos en GZIP estos no se interpretaran sino que seran tomados como archivos compresos e interpretados con el MIME Type de applicacion/x-gzip y esto causara que no tengamos los STYLES puestos y el SCRIPT JS no existirá.

Ahora debemos habilitar mod_deflate.

Código:
shell# cat /etc/httpd/conf/httpd.conf |grep deflate

LoadModule deflate_module modules/mod_deflate.so

Y la configuracion... en mi caso todo lo tengo en el directorio /etc/httpd/conf.d/

Código:
shell# cat /etc/httpd/conf.d/deflate.conf

AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript application/x-javascript

Creacion de Comprimidos


Ya que tenemos todo configurado, ahora falta comprimir los estilos CSS y script JS.

Código:
# comprimiendo CSSs
shell# cd /nuestro/proyecto/web/estilos
shell# ls -l
estilo.css

shell# gzip estilo.css
shell# ls -l
estilo.css.gz

# cambiando el nombre al comprimido
shell# mv estilo.css.gz estilo.cgz

# comprimiendo js
shell# cd /nuestro/proyecto/web/js/
shell# ls -l
script.js

shell# gzip script.js
shell# ls -l
script.js.gz

# re-nombrando
shell# mv script.js.gz script.jgz

La razon del porque cambiamos de css.gz a .cgz, es porque mas arriba en la configuracion del Apache indicamos el MIME Type .cgz y .jgz.

Adaptación en el Sitio

Ahora solo falta mandar llamar los comprimidos en el sitio, aqui un ejemplo de antes y despues.

Antes.........
Código
  1. <html>
  2. <head>
  3. <link rel="stylesheet" type="text/css" href="css/estilo.css">
  4. <script type="text/javascript" src="js/script.js"></script>
  5. </head>
  6.  
  7. <body>
  8. </body>
  9. </html>
  10.  

Despues.....
Código
  1. <html>
  2. <head>
  3. <link rel="stylesheet" type="text/css" href="css/estilo.cgz">
  4. <script type="text/javascript" src="js/script.jgz"></script>
  5. </head>
  6.  
  7. <body>
  8. </body>
  9. </html>
  10.  

Ofuscación en PHP


Ahora debemos hacer la ofuscacion, y esto debe ser directamente en PHP, y veras como magicamente su sitio pasa de pesar muchisimos, a simples Kilobytes xD.

Les dejo la idea basica sobre como se haria, ustedes ya en sus codes lo arman al gusto, pero deben seguir el siguiente lineamiento a fuerzas

Código:
<?php
ob_start( 'comprimir_web' );
# funcion para comprimir pagina web
function comprimir_web($buffer)
 {
 $busca = array('/\>[^\S ]+/s','/[^\S ]+\</s','/(\s)+/s');
 $reemplaza = array('>','<','\\1');
 return preg_replace($busca, $reemplaza, $buffer);
 }

echo '<html>
<head>
<title></title>
</head>

<body></body>
</html>';

ob_end_flush(); # fin objeto
?>

URL Amigables


El uso de URL Amigables como muchos sabran sirven para evitar acceder a las noticias de la forma comun que es http://sitios.com/?id_noticia=12 y hacerlo mas amigable y legible, que seria: http://misitios.com/noticias/10-tituto_de_la_noticia.html.

El punto de mencionar las URLS Amigables es porque posiblemente muchos digan no quiero usar la extensión CGZ o JGZ, y desean seguir usando CSS y JS. Pues si se puede, para ello hacemos uso de las mod_rewrite en Apache, la cual deben saber como activarlas (sino, entonces google).

Para seguir usando la "nomenclatura" estilo.css o script.js, pero que este llame al comprimido GZ, usamos Reglas que deben ser establecidas mas o menos asi, cabe mencionar que para cada caso es distinto, dependiendo como tienen organizado su sitio.

Donde tengo mis JGZ y CGZ ??
Código:
# aqui tengo mis CGZ
shell# ls -l /home/user/public_html/templates/css/

# aqui tengo mis JGZ
shell# ls -l /home/user/public_html/templates/js/

Editamos el <VirtualHost> (de preferencia... Yo aqui lo tengo) o bien el HTACCES (muchos tambien ponene aqui las reglas). Y dejamos mas o menos asi:

Código:
shell# cat /etc/httpd/conf/httpd.conf

........
RewriteRule ^template/css/(.+)\.css$ template/css/$1.cgz
RewriteRule ^template/js/(.+)\.js$ template/js/$1.jgz
........

Ahora podran invocar las etiquetas:

Código:
<link rel="stylesheet" type="text/css" href="css/estilo.css">
<script type="text/javascript" src="js/script.js"></script>

Y mod_rewrite estaria llamando los JGZ y CGZ que son los que en realidad existen en el sitio.

Herramientas


Les dejo las herramientas web para que peudan testear la configruacion en su sitio y verificar que este bien implementada:

http://www.whatsmyip.org/http_compression/
http://www.gidnetwork.com/tools/gzip-test.php

Agradecimientos


Pues de nada, al rato formalizo el texto y subo en PDF....
Visiten mi blog: <spam>

Saludos !
« Última modificación: 12 Agosto 2011, 01:36 am por madpitbull_99 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines