Foros del Web » Creando para Internet » Diseño web »

gzip duda

Estas en el tema de gzip duda en el foro de Diseño web en Foros del Web. hola gente del foro estoy trabajando con gzip y lo logre montar en mi servidor. lo testie usando wget y me anda de maravilla ahora ...
  #1 (permalink)  
Antiguo 25/11/2010, 16:04
 
Fecha de Ingreso: octubre-2010
Mensajes: 13
Antigüedad: 13 años, 6 meses
Puntos: 0
gzip duda

hola gente del foro

estoy trabajando con gzip y lo logre montar en mi servidor.
lo testie usando wget y me anda de maravilla

ahora quiero avanzar un paso mas en la compresion de mi sitio pero nose si se puede hacer esto.


tengo un script de javascript-Jquery que lee un archivo XML

lo que quiero hacer es llamarlo comprimido.


Código:
  $.ajax({
    type: "GET",
    url: 'mi_xml.xml',  //quiero comprimir esto
    dataType: "xml",
     success: function(xml) {
el archivo mi_xml.xml, le varie su peso de 300kb, a 700kb y a 2mb, y la diferencia entre tiempos es considerable (2mb 26segundos de carga).
  #2 (permalink)  
Antiguo 26/11/2010, 12:19
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: gzip duda

hazlo como sigue
tendras que renombrer tu ejemplo.xml como ejemplo.xml.php

luego

Código PHP:
Ver original
  1. <?php
  2. header("Content-Type: text/xml;charset=utf-8");
  3. header("Cache-Control:must-revalidate");
  4. ob_start("ob_gzhandler");
  5. $offset = 60 * 60;
  6. $ExpStr = "Expires:" .
  7. gmdate("D,d M Y H:i:s",time() + $offset) . " GMT";
  8. header($ExpStr);
  9.  
  10. echo<<<XML
  11. <?xml version="1.0" encoding="UTF-8"?>
  12. <datos>
  13. <!-- el resto de tu xml -->
  14. </datos>
  15. XML;
  16. ?>

la form que te indiqué es más universal, porque desactivar short_open_tag en php solo lo he conseguido via .htaccess

php_flag short_open_tag Off

Pero esto no se puede hacer si php lo tienes configurado como fast/CGI, sólo si esta como modulo de Apache. Y ini_set() para php_flag short_open_tag nunca lo pude hacer funcionar

una demo
http://foros.emprear.com/xml/ejemplo.xml.php

El tamaño en disco es de 46.946 Bytes con Gzip -> 8.637 bytes




Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 29/11/2010, 18:15
 
Fecha de Ingreso: octubre-2010
Mensajes: 13
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: gzip duda

hola

gracias por responder.

comprendo lo que isiste pero no me resulta.
estoy usando XAMPP y no entiendo mucho eso de php_flag short_open_tag Off ni como tengo que configurarlo para que me resulte

estoy empezando a pensar que me va a ser imposible comprimir con GZIP los archivos que invoco desde un script de javascript.

¿como invocar desde javascript un archivo comprimido? xD



mi archivo .htaccess

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml

<Files *.xml>
SetOutputFilter DEFLATE
</Files>
  #4 (permalink)  
Antiguo 29/11/2010, 18:45
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: gzip duda

alkohol:
Yo tambien uso xampp, y tanto en xampp como en mi servidor en internet, la compresion se realiza sin problemas, solo necesitas de php y las extensiones zlib, habilitadas, que por defecto asi vienen.

El método que te propuse, justamente no necesita de .htaccess

Cuando escribes php, usas esto
<?php
// codigo
?>

hay una forma abreviada que es

<?
// codigo
?>

lo cual se consigue habilitando en el php la opcion de php_ini
short_open_tag On

El problema con los xml es que su sintáxis utiliza

<?

como para comprimir el xml lo procesamos como php, si el método abreviado está habilitado se crea un conflicto y te genera error.

Poner en off short_open_tag no siempre esta al alcance del usuario, ya que depende de la version de php y de como esté instalado en el Server.

Entonces te repito, el método universal es

<?php
header("Content-Type: text/xml;charset=utf-8");
header("Cache-Control:must-revalidate");
ob_start("ob_gzhandler");
$offset = 60 * 60;
$ExpStr = "Expires:" .
gmdate("D,d M Y H:i:s",time() + $offset) . " GMT";
header($ExpStr);

echo<<<XML
<?xml version="1.0" encoding="UTF-8"?>
<datos>
<!-- el resto de tu xml -->
</datos>
XML;
?>

Ya que de esta manera el <? del xml queda entre un "echo" y php no lo confunde con el <? propio de su sintáxis

Más esplicaciones, serían redundantes.

todo esto no es necesario
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml

Sin embargo eso que pusiste sirve para aclararte otra cuestion, php solo va a comprimir los Mime Type text/* . de ahí que yo use
header("Content-Type: text/xml;charset=utf-8"); Si usas un rss (que basicamente es un xml) pero le pasas application/rss+xml NO te va a funcionar. Solo pásale el Header en el PHP como text/xml, supongo debería funcionar.

con respecto a los Javascript y Css, es bastante similar

sólo dirijete a
http://gzip.emprear.com.ar/
comprueba el funcionamiento y descarga lo que necesites
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 30/11/2010, 07:13
 
Fecha de Ingreso: octubre-2010
Mensajes: 13
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: gzip duda

Gracias por responder

revice lo que me dijiste

primero que nada revice mi configuracion de php
<?php
phpinfo();
?>


* Server API Apache 2.0 Handler

*ZLib Support enabled
Stream Wrapper support compress.zlib://
Stream Filter support zlib.inflate, zlib.deflate
Compiled Version 1.2.3
Linked Version 1.2.3

Directive Local Value Master Value
zlib.output_compression Off Off
zlib.output_compression_level -1 -1
zlib.output_handler no value no value


cree el archivo linea.xml.php, primero quiero ver que se visualice asi que no le hice ningún cambio

Código PHP:
Ver original
  1. <?php
  2. header("Content-Type: text/xml;charset=utf-8");
  3. header("Cache-Control:must-revalidate");
  4. ob_start("ob_gzhandler");
  5. $offset = 60 * 60;
  6. $ExpStr = "Expires:" .
  7. gmdate("D,d M Y H:i:s",time() + $offset) . " GMT";
  8. header($ExpStr);
  9.  
  10. echo<<<XML
  11. <?xml version="1.0" encoding="UTF-8"?>
  12. <datos>
  13. <!-- el resto de tu xml -->
  14. </datos>
  15. XML;
  16. ?>



y me salio el siguiente problema

Warning: Cannot modify header information - headers already sent by (output started at D:\xampp\htdocs\linea.xml.php:1) in D:\xampp\htdocs\linea.xml.php on line 2

Warning: Cannot modify header information - headers already sent by (output started at D:\xampp\htdocs\linea.xml.php:1) in D:\xampp\htdocs\linea.xml.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at D:\xampp\htdocs\linea.xml.php:1) in D:\xampp\htdocs\linea.xml.php on line 8





PD: los ejemplos de http://gzip.emprear.com.ar/, los descarge y los pege en D:\xampp\htdocs\
con la herramienta "Live HTTP headers" vi las cabecera del sitio y sale la compresion por Gzip (Content-Encoding = gzip).
  #6 (permalink)  
Antiguo 30/11/2010, 11:26
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: gzip duda

alkohol:

El error que se te produce tiene su origen en otra cosa, la funcions headers() en php tiene condicion que el html no genere ningún encabezado previo, generalmente cuando aparece el error es porque algún caracter está apareciendo en la salida del navegador antes del header,
en mi ejemplo
<?php
header("Content-Type: text/xml;charset=utf-8");
header("Cache-Control:must-revalidate");
....
que es muy básico, obviamente no existe nada antes del header(), asi que supongo que el problema te lo está generando el editor de texto que estás usando, el cual probablemente te esté dejando al guardar el documento, un elemento llamado BOM, si quieres más detalles sobre el tema, yo he publicado esto que te puede servir de guia
http://foros.emprear.com/codificar

Ahora, puntualmente, y si este es el origen del problema, la solución pasa por guardar el documento como utf-8 NO BOM (sin BOM), te recomiendo que uses algun editor de texto que te de esa opción, los más avanzados (notepad++, notepad2, EditPad Lite, etc...) la tienen. Yo en particular uso el Ultraedit.

He hecho una prueba para que lo constates,
en http://gzip.emprear.com.ar he subido dos muestras del código de ejemplo que pasé,
test.xml.php
y
test.xml-nobom.php

con y sin la marca del BOM respectivamente

Prueba ambos y fijate lo que sucede, los archivos, en su contenido son exáctamente iguales

Espero esto resuelva tu problema y dudas

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 30/11/2010, 14:47
 
Fecha de Ingreso: octubre-2010
Mensajes: 13
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: gzip duda

xD

ke fail mi error xD
jajajaja

te comento... lei tu post y testie mi sitio
esta en llamas gracias a tu ayuda

me funciono y te agradesco un monton tu ayuda!!!
ahora me uno al clan

  #8 (permalink)  
Antiguo 30/11/2010, 15:19
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: gzip duda

alkohol

Y con ese nic de que otra manera iba a quedar tu sitio
Pero que te quede Claro.... La Porrista es MIA !!!!!


que ya la tengo "de cabeza"



saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Última edición por emprear; 30/11/2010 a las 19:41

Etiquetas: gzip
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 19:13.