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:
<?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...Tiempo de Carga: 1.50 | Peso Web: 14.43 kb
Despues de la implementacion...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...
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 VirtualHostshell# 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:
# 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:
# 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.
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/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.
# 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.........<html>
<head>
<link rel="stylesheet" type="text/css" href="css/estilo.css">
<script type="text/javascript" src="js/script.js"></script>
</head>
<body>
</body>
</html>
Despues.....<html>
<head>
<link rel="stylesheet" type="text/css" href="css/estilo.cgz">
<script type="text/javascript" src="js/script.jgz"></script>
</head>
<body>
</body>
</html>
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<?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 ??# 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:
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:
<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.phpAgradecimientos
Pues de nada, al rato formalizo el texto y subo en PDF....
Visiten mi blog:
<spam>Saludos !