Estaba probando mi sitio web con Page Speed y el resultado fue de alrededor de 70/100. Habilitar la compresión fue el primer factor y el más importante para desacelerarlo.PHP Manual GZip Codificación
Sé que puedo hacer eso modificando el php.ini para hacerlo automáticamente pero estaba más interesado en el método manual (gzencode
).
El problema es que todos los navegadores fallan al abrir el sitio web (Firefox: "La página que intentas ver no se puede mostrar porque usa una compresión no válida o no compatible", Chrome: "303, ERR Content Encoding ", etc.) o muestran la cadena codificada.
Live Headers muestra que el navegador acepta la codificación, y la respuesta tiene el tipo de contenido establecido, pero aún falla.
GET/HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate
HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Length: 5827
Vary: Accept-Encoding
private function _compress($data) {
//return trim(preg_replace(array('/\>[^\S ]+/s','/[^\S ]+\</s','/(\s)+/s'), array('>','<','\\1'), $data));
$supportsGzip = strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false;
ob_start();
if ($supportsGzip) {
echo gzencode(trim(preg_replace('/\s+/', ' ', $data)), 9);
} else {
echo $data;
}
$content = ob_get_contents();
header("content-type: text/html; charset: UTF-8");
header("cache-control: must-revalidate");
$offset = 60 * 60;
$expire = "expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
header($expire);
header('Content-Length: ' . strlen($content));
header('Vary: Accept-Encoding');
ob_end_clean();
echo $content;
}
Si cambio el Content-Encoding a zlib, me sale la cadena codificada:
‹������ÕZÿsÛ¶ÿW^‘¥²o‘¨/–-Ë–Ú؉_Ôµ•õÚ_v I°I‚!A©j–Öºnçÿb·»%ÍÚë²nëå?‘þ›=€¤L)’,ÛIw>ŸEâxïáƒ÷°ùÞ½O¶Ÿï߇Žtlؼµ·» $kŸ•¶ ã^ã<܃•\¾� Ÿº—\¸Ô6ŒûŽ”^Õ0z½^®WÊ ¿m4ÅjÅ°…XÎ’©Ã¦ænS·]#ÌÕF-|8LRPL²ìIÈ»5²-\É\™mô=FÀŒJ5"Ù—RóÝ�³Cý€ÉZ([ÙŠb%¹´YýÑãáîcx}±iD´˜¿KV#4”á§x>¬°à®íÒ ãpÅËæî1øÌ®‘@öm
Realmente no me importa nada acerca de cómo obtener la compresión tanto como Quiero saber por qué no está funcionando.
Saludos,
1 pregunta interesante – Wh1T3h4Ck5
Si '$ supportsGzip' no debe Content-Length' ser la longitud del contenido gzip en su lugar? – Fanis
@Fanis, contenido contiene el contenido del búfer, ya sea codificado o sin formato, según $ supportsGzip. –