Foros del Web » Administración de Sistemas » Apache »

Comprimir archivos con gzip en .htaccess

Estas en el tema de Comprimir archivos con gzip en .htaccess en el foro de Apache en Foros del Web. Buenas, necesitaría si alguien me puede echar una mano. Necesito comprimir los archivos de mi web, html, css, java He leido que lo mejor es ...
  #1 (permalink)  
Antiguo 11/06/2012, 12:27
 
Fecha de Ingreso: agosto-2010
Mensajes: 36
Antigüedad: 13 años, 8 meses
Puntos: 1
Comprimir archivos con gzip en .htaccess

Buenas,

necesitaría si alguien me puede echar una mano. Necesito comprimir los archivos de mi web, html, css, java

He leido que lo mejor es con el archivo htaccess pero no consigo dar con ello.

Alquien me puede decir como?

Mil gracias
  #2 (permalink)  
Antiguo 11/06/2012, 12:46
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Comprimir archivos con gzip en .htaccess

Hay varias formas, algunas mas sencillas, otras no tanto.

Todo dependerá de que módulos tengas habilitados en apache´, como este instalado php en Apache, etc

lo primero que seberías intentar es, en el .htaccess de tu raiz incluir
Código Apache:
Ver original
  1. <IfModule mod_deflate.c>
  2. AddOutputFilterByType DEFLATE application/xhtml+xml
  3. AddOutputFilterByType DEFLATE text/plain
  4. AddOutputFilterByType DEFLATE text/html
  5. AddOutputFilterByType DEFLATE text/xml
  6. AddOutputFilterByType DEFLATE text/css
  7. AddOutputFilterByType DEFLATE text/javascript
  8. AddOutputFilterByType DEFLATE application/xml
  9. AddOutputFilterByType DEFLATE application/xhtml+xml
  10. AddOutputFilterByType DEFLATE application/rss+xml
  11. AddOutputFilterByType DEFLATE application/javascript
  12. AddOutputFilterByType DEFLATE application/x-javascript
  13. </ifModule>

Podés agregar/quitar tipos según tu gusto, como verás son todos archivos de texto.
Para el caso de los .java, no se exactanmente el mime correcto, supongo que sería alguno de estos
text/x-java-source, text/java, text/x-java, application/ms-java

Para verificar tendrías que utilizar alguna herramienta que te permita ver los headers enviados por el server, deberías ver algo como

Date: Mon, 11 Jun 2012 18:35:49 GMT
Server: Apache/2.2.3 (CentOS)
Vary: Host,Accept-Encoding
Last-Modified: Mon, 09 Jan 2012 02:52:56 GMT
Etag: "8698cf8-1a25-4b60f7edcb200"
Accept-Ranges: bytes
Content-Encoding: gzip
Cache-Control: public, max-age=2419200
Content-Length: 1740
Content-Type: text/css; charset=utf-8
Content-Language: es

200 OK

En negrita, el encoding

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 11/06/2012, 12:58
 
Fecha de Ingreso: agosto-2010
Mensajes: 36
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: Comprimir archivos con gzip en .htaccess

lo primero que seberías intentar es, en el .htaccess de tu raiz incluir
Código Apache:
Ver original
  1. <IfModule mod_deflate.c>
  2. AddOutputFilterByType DEFLATE application/xhtml+xml
  3. AddOutputFilterByType DEFLATE text/plain
  4. AddOutputFilterByType DEFLATE text/html
  5. AddOutputFilterByType DEFLATE text/xml
  6. AddOutputFilterByType DEFLATE text/css
  7. AddOutputFilterByType DEFLATE text/javascript
  8. AddOutputFilterByType DEFLATE application/xml
  9. AddOutputFilterByType DEFLATE application/xhtml+xml
  10. AddOutputFilterByType DEFLATE application/rss+xml
  11. AddOutputFilterByType DEFLATE application/javascript
  12. AddOutputFilterByType DEFLATE application/x-javascript
  13. </ifModule>

Incluyo el código que me indicas pero no me lo comprime. Me dicen los programas que sigo igual.
  #4 (permalink)  
Antiguo 11/06/2012, 13:07
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Comprimir archivos con gzip en .htaccess

Que programas?
Estás probando con Google SpeedPage y esas cosas?
Mirá los encabezados para asegurarte

Si no es así, hay que ver como está instalado php en Apache, si como modulo ó como CGI

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 11/06/2012, 13:40
 
Fecha de Ingreso: agosto-2010
Mensajes: 36
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: Comprimir archivos con gzip en .htaccess

Cita:
Iniciado por emprear Ver Mensaje
Que programas?
Estás probando con Google SpeedPage y esas cosas?
Mirá los encabezados para asegurarte

Si no es así, hay que ver como está instalado php en Apache, si como modulo ó como CGI

SAludos
lo veo con seoquake y pagespeed

¿como puedo ver como está instalado el php? eso no tengo ni idea
  #6 (permalink)  
Antiguo 11/06/2012, 14:15
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Comprimir archivos con gzip en .htaccess

Sería bueno ver la url de la página, a veces pageSpeed lee desde algua cache y no muestra los resultados correctamente
Para averiguar lo de php, creas una script con

<?php
phpinfo();
?>

y la ejecutas, en la 5/6 fila de los resultados vas a ver que dice
Server API

Ese valor es el que se necesita saber
Despues borra la script (podés guardarte la página para conocer detalles de la configuración de php en el futuro)

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 11/06/2012, 15:57
 
Fecha de Ingreso: agosto-2010
Mensajes: 36
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: Comprimir archivos con gzip en .htaccess

Disculpa pero en esto estoy muy pez. Creamos una web y la subimos a un servidor pero no trabajamos con php. Utilizamos una base de datos del servidor usando phpmyadmin pero no se como hacer lo que me dices

Última edición por seleccionatural; 11/06/2012 a las 16:06
  #8 (permalink)  
Antiguo 11/06/2012, 16:56
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Comprimir archivos con gzip en .htaccess

phpmyadmin está escrito en php
Tenes que subirlo por ftp
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #9 (permalink)  
Antiguo 12/06/2012, 02:35
 
Fecha de Ingreso: agosto-2010
Mensajes: 36
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: Comprimir archivos con gzip en .htaccess

ok, ya lo he hecho. Lo tengo instalado como cgi
  #10 (permalink)  
Antiguo 12/06/2012, 12:56
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Comprimir archivos con gzip en .htaccess

Se puede, pero es el caso más complicado.

Tenés 2 posibilidaes.
Primero deberías ingresar tu panel de control (Cpanel, Webmin, etc) y verificar si en algún lugar tenes la posibilidad de agregar extensiones a tus "handlers de php". Esto es, actualmente tus extensiones que se procesan como php son las, .php, deberñias agregra lo mismo por lo menos para los .html, .css , .js, una vez hecho esto, en los css deberías cambiar, por ejemplo

estilo.css

Código CSS:
Ver original
  1. body{
  2. background-color; red;
  3. }

por

Código PHP:
Ver original
  1. <?php
  2. $archivo = $_SERVER['SCRIPT_FILENAME'];
  3. $expira = 60 * 60 * 24 * 365;
  4. $ExpStr = "Expires:" . gmdate("D,d M Y H:i:s",time() + $expira) . " GMT";
  5. $ft = filemtime($archivo);
  6. $time = time() - $ft;
  7. $eTag = "ci-".md5($archivo.$ft);
  8. header("Content-Type: text/css;charset=utf-8");
  9. header("Cache-Control: public, max-age=$expira");
  10. header($ExpStr);
  11. header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ft).' GMT');
  12. header('ETag: "'.$eTag.'"');
  13. ob_start("ob_gzhandler");
  14. ?>
  15. /* aqui abajo pones todo tu código css */
  16. body{
  17. background-color: red;
  18. }

Para lo js, sería bastante similar

<?php
$archivo = $_SERVER['SCRIPT_FILENAME'];
$expira = 60 * 60 * 24 * 365;
$ExpStr = "Expires:" . gmdate("D,d M Y H:i:s",time() + $expira) . " GMT";
$ft = filemtime($archivo);
$time = time() - $ft;
$eTag = "ci-".md5($archivo.$ft);
header("Content-Type: text/javacript;charset=utf-8");
header("Cache-Control: public, max-age=$expira");
header($ExpStr);
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ft).' GMT');
header('ETag: "'.$eTag.'"');
ob_start("ob_gzhandler");
?>
// aqui abajo todo el javascript
var x = 1;


Cambiaría la linea que está en negrita, el content-type debe ser text-javascript

Los html y php(estáticos), más o menos lo mismo
Código HTML:
Ver original
  1. <?php
  2. $archivo = $_SERVER['SCRIPT_FILENAME'];
  3. $expira = 60 * 60 * 24 * 1;
  4. $ExpStr = "Expires:" . gmdate("D,d M Y H:i:s",time() + $expira) . " GMT";
  5. $ft = filemtime($archivo);
  6. $time = time() - $ft;
  7. $eTag = "ci-".md5($archivo.$ft);
  8. header("Content-Type: text/html;charset=utf-8");
  9. header("Cache-Control: public, max-age=$expira");
  10. header($ExpStr);
  11. header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ft).' GMT');
  12. header('ETag: "'.$eTag.'"');
  13. ob_start("ob_gzhandler");
  14. ?>
  15. <!DOCTYPE html>
  16. <html lang="es-ar">
  17. <meta charset="utf-8" />
  18. <title>Traductiva - La agencia y su equipo de traductores.</title>

cambia también el content-type, esta vez por text/html


En todos los casos en la linea
$expira = 60 * 60 * 24 * 1;
lo que te interesa es el ultimo número, que indica la cantidad de dias que el archivo va a estar en la cache, en los ejemplos 365 para los js y css y 1 en los html
Esto de la cache es aparte del tema de la compresión, pero te lo paso asi no sea cosa que así como tu hosting no te dejó manejar el mod_deflate, te ponga una restricción para mod_headers

Si tus php son dinámicos (algo que permanentemente actualiza desde una base de datos, por ejemplo, ó un php que procese formularios) solo pones
Código PHP:
Ver original
  1. <?php
  2. ob_start("ob_gzhandler");
  3. ?>
y obvias lo de la cache

Estos fragmentos van siempre al inicio del documento y recordá que te dije que que necesitas procesar esas extensiones (js, css, html) como php activando los handlers correspondientes en el panel de control.

Si eso no e posible, también podés hacerlo, pero bajo la condición que a todos tus archivos los renombres como php
es decir que los llamarías usando
<link href="css/estilo.css.php" rel="stylesheet" type="text/css" /> ó
<script type="text/javascript" src="html5ie.js.php"></script>

Es un poco complejo comparado con la primera solución que te propuse, pero no hay otra forma, dadas las limitaciones que te impone tu servidor

te doy un tip extra
si tenés multiples archivos css, podés usar esta variante
Código PHP:
Ver original
  1. <?php
  2. $archivo = $_SERVER['SCRIPT_FILENAME'];
  3. $expira = 60 * 60 * 24 * 365;
  4. $ExpStr = "Expires:" . gmdate("D,d M Y H:i:s",time() + $expira) . " GMT";
  5. $ft = filemtime($archivo);
  6. $time = time() - $ft;
  7. $eTag = "ci-".md5($archivo.$ft);
  8. header("Content-Type: text/css;charset=utf-8");
  9. header("Cache-Control: public, max-age=$expira");
  10. header($ExpStr);
  11. header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ft).' GMT');
  12. header('ETag: "'.$eTag.'"');
  13. ob_start("ob_gzhandler");
  14.  
  15. include('reset.css');
  16. include('principal.css');
  17. // y el resto, repetando el orden en que lo hubieses puesto de hacerlo individualmente
  18. // advertí que los includes estan antes del cierre de php y no después
  19. ?>
Con los js, es similar

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #11 (permalink)  
Antiguo 12/06/2012, 13:50
 
Fecha de Ingreso: agosto-2010
Mensajes: 36
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: Comprimir archivos con gzip en .htaccess

y con esto en mis archivos correspondientes valdría?
lo que no sé es lo del panel de control. No uso php. Está en mi servidor ese panel?
  #12 (permalink)  
Antiguo 12/06/2012, 15:20
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Comprimir archivos con gzip en .htaccess

Si no usás php no se puede.
Yo le preguntaria a los del Web hosting si hay alguna posibilidad de hacerlo
Lo ideal es habilitar los módulos como cite al principio
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #13 (permalink)  
Antiguo 13/06/2012, 12:33
 
Fecha de Ingreso: agosto-2010
Mensajes: 36
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: Comprimir archivos con gzip en .htaccess

Si tengo toda la web en html es imposible? jo....er que fastidio
Aunque tenga archivos php java o css??

Etiquetas: comprimir, gzip, htaccess
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:35.