Laboratorio: acceder a contenido dinámico de forma estática (caché)
La verdad es que el tÃtulo puede ser un tanto difÃcil de entender. Pero explicando que es lo que quiero decir, supongo que será fácil de entender. En este caso se trata totalmente de “laboratorio”, ya que es una idea que se me ha ocurrido y que su implementación puede que no se pueda necesitar, ya que se tratarÃa de un ejemplo muy a la medida. Aunque bien pensado, se trata de una caché.
El problema de acceder a contenido dinámico (sobre todo pasa en Java) es sobrecargar el acceso a un mismo script (o JSP), a parte de que el acceso a contenido estático es mucho más rápido que el acceso a un contenido dinámico. El problema es cuando queremos acceder a contenido dinámico de forma estática.
Imaginemos un mapa tipo Google Maps, tenemos la Tierra totalmente vectorizada y dividimos el mapa en cuadrÃculas (x e y). Para acceder a una imagen queremos que sea de forma estática para agilizar la carga de la página y no sobrecargar el servidor, pero la imágen no se puede cargar porque no existe, se tiene que crear dinámicamente.
¿Cual es la solución?, controlar la página de error 404, para que cuando no exista la imagen que deseamos la cree y asà la próxima vez ya podamos acceder a ella de forma estática.
Para ello tendremos que modificar el fichero .htaccess para que cuando no encuentre la imagen la cree y la devuelva.
ErrorDocument 404 /sentidoweb/imagenes-estaticas/createimage.php
Y tendremos que crear un script PHP para que cree la imagen y la devuelva. En este caso hemos añadido unas condiciones, y es que la imagen tiene que ser png y que tiene que tener el nombre con el siguiente formato (en expresión regular): /\d{1,2}_\d{1,2}\.png/ .
<?php
$url = $_SERVER["REQUEST_URI"];
// Si es una imagen PNG
if (preg_match("/\.png$/", $url)) {
$nombreImagen = substr($url, strrpos($url, "/")+1);
// Si el nombre de la imagen tiene el formato que deseo
if (preg_match("/^\d{1,2}_\d{1,2}\.png$/", $nombreImagen)) {
// Obtengo que imagen tengo que crear
$aux = substr($nombreImagen, 0, strlen($nombreImagen)-4);
$coords = split("_", $aux);
// Creo la imagen
header("Content-type: image/png");
$img = imagecreate(50, 50);
$cFondo = imagecolorallocate($img, 0, 133, 133);
$cTexto = imagecolorallocate($img, 255, 255, 255);
imagestring($img, 1, 5, 5, '['.$coords[0].', '.$coords[1].']', $cTexto);
imagepng($img, $nombreImagen);
imagepng($img);
}
}
?>
Está claro que esto no funcionarÃa para nada si el contenido dinámico se actualiza con frecuencia.
Debido a la decepción que me estoy llevando con el Zend Framework, aunque aún tengo esperanzas en que vaya mejorando, he tenido que buscar otras librerÃas PHP para crear PDF. Una que he encontrado que me está gustando bastante (por ahora) es FPDF, una librerÃa que exporta a PDF sin necesidad de PDFLib (la cual es de pago). Lo bueno que tiene tambien es que es gratuita, se puede usar libremente y modificar según nuestras necesidades.
Ha sido lanzada la versión 1.7.0 de la aplicación WAMP (Windows Apache MySQL PHP), que añade además phpmyadmin.
El spam se ha convertido en uno de los mayores problemas con los que nos podemos enfrentar a la hora de desarrollar una aplicación web. Si estás en el proceso de creación de una aplicación, te va a venir bastante bien la lectura de los artÃculos que os pasamos a continuación y de los que hacemos un pequeño resumen.