Archivo de la etiqueta: truco

Mejorar el tiempo de carga de la web descargando con CRON archivos externos

En ocasiones, una web meteorológica puede enriquecerse con archivos externos que contengan predicciones, mapas de radar o imágenes de satélite.

Lo más habitual es enlazar esas imágenes mediante la URLs de los archivos en el servidor web externo en el que están disponibles. Sin embargo, en el caso de que el servidor externo no tenga un tiempo de respuesta suficientemente rápido, o esté caído en ocasiones, puede ralentizar significativamente el tiempo de carga de nuestra web.

En estos días en los que estoy montando la web meteovillaverdepontones.es, he encontrado una forma de mejorar el tiempo de carga de la web. Consiste en planificar un tarea mediante CRON, en la que se descarguen los archivos de las URLs externas, ubicándolos en nuestros directorios públicos locales y renombrándolos para que sean incluidos en nuestras páginas web mediante URLs locales.

Las tareas de CRON consisten en uno o varios comandos a ejecutar. En caso de que nuestra tarea tenga más de un comando, estos se deben separar mediante ; o bien estar incluidos en un script. La configuración de tareas en CRON puede realizarse directamente a nivel de sistema operativo, o mediante utilidades que suelen facilitar los  hostings para programar tareas a través del comando CRON (por ejemplo, Cron Jobs/Trabajos de Cron en Cpanel).

Para que sea más sencillo, lo explicaré a través de un ejemplo:

  • cd /home/usuario/public_html/meteodata; lo primero es seleccionar el directorio dentro de nuestro public_html en el que ubicaremos el archivo descargado.
  • wget -q -T 60 http://dirección-url-externa/nombre-archivo-externo.ext; a continuación se descarga el archivo de la dirección URL externa. En este caso la opción -q hace que se realice de manera silenciosa (el comando no genera ningún output) y que en caso de que en 60 segundos no se obtenga el archivo, se genere un timeout que aborte la descarga.
  • mv -f nombre-archivo-externo.ext nombre-archivo-local.ext; finalmente cambiamos de nombre el archivo externo por el nombre local que enlazaremos desde nuestra propia web. En este caso, lo que hacemos es forzar la sobreescritura en caso de que el archivo local ya exista.

Os dejo los enlaces a los manuales de los comandos utilizados. Con ellos de pueden tratar casos menos simples y adaptar a las necesidades de cada sitio web:

Una cuestión importante para no sobrecargar de forma innecesaria nuestro hosting ni los sitios web externos, es conocer cada cuánto tiempo y a qué horas se generan los archivos externos, y hacer una planificación coherente de la ejecución de los comandos o scripts mediante CRON con la periodicidad adecuada. Por ejemplo, una imagen con la previsión generada mediante un modelo cada 12 horas no debe tratarse igual que una pastilla que contenga los datos de una estación meteorológica que cambien cada 15 o 30 minutos.