Ver Mensaje Individual
  #32 (permalink)  
Antiguo 26/09/2011, 10:32
Avatar de charlyalegret
charlyalegret
 
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 12 años, 6 meses
Puntos: 140
Respuesta: Quiero mejorar el pagespeed de mi sitio Web

Hola,
yo también tuve muchos problemas para especificar el caché y habilitar la compresión. Aunque tengo acceso al htaccess de mi servidor, prové todo lo que sale por aquí sin resultado (creo que usa una versión antigua de apache o algo así). Lo que sí me sirvió lo siguiente y por eso lo comparto. Sirve para páginas creadas tanto en php como html.
Se trata de añadir en el htaccess las siguientes lineas:

AddType x-mapp-php5 .php .html .shtml .htm .js .txt .css
AddHandler x-mapp-php5 .php .html .shtml .htm .js .txt .css
<FilesMatch "\.(jpg|jpeg|png|gif|ico)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>

Las dos primeras son para que funcione la compresión, no me preguntéis porqué (me parece que hace algo como definir los archivos como php5, y luego más adelante veréis como indicamos la compresión). Funcionará sobre las extensiones indicadas.
Las tres últimas lineas es para especificar el caché en archivos no comprimibles en gzip.

Por otro lado, se crea un archivo php.ini que se coloca en el directorio raiz del servidor y cada uno de los subdirectorios donde tengamos .js, .css y archivos comprimibles. Este archivo es el que indicará que se lleve a cabo la compresión. Deve contener:

zlib.output_compression = On
zlib.output_compression_level = 9
allow_url_fopen = On
auto_prepend_file = /ruta física/archivo.php

La última línea llama a otro archivo (llamaremos archivo.php, por ej.), que indicará las cabeceras de los archivos comprimidos, ya que estas se pierden. Se deve indicar la ruta física (no la virtual) de este archivo.php y que contendrá:

<?
$pathinfo = pathinfo($_SERVER['PHP_SELF']);
$extension = $pathinfo['extension'];
if($extension == "css")
{
header("Content-type: text/css");
header("Cache-Control: max-age=604800, public");
header("Last-modified: 2011-09-24 20:10");
}
if($extension == "js")
{
header("Content-type: text/javascript");
header("Cache-Control: max-age=604800, public");
header("Last-modified: 2011-09-24 20:10");
}
if($extension == "html")
{
header("Content-type: text/html");
}
?>

De esta forma indicamos también el caché de los archivos .js y .css

Finalmente, para saber la ruta física del archivo.php, podemos crear un segundo archivo, por ej. ruta.php, que colocaremos en el mismo directorio que archivos.php y que contendrá:

<?
$ruta_absoluta = getcwd();
echo 'Ruta física: ' . $ruta_absoluta;
?>

Al ejecutar el archivo en el explorador, nos indica la ruta del archivo.

Bueno, espero que os sea de utilidad para aquellos que no os da resultado el indicar la compresión directamente en el .htpaccess!

---------------------------
[URL="http://www.birdikus.com"]http://www.birdikus.com[/URL]