El error de subir 10000 páginas HTML

En varios proyectos, especialmente creados entre los años 2000 y 2005, generan tantas páginas estáticas que algunos desarrolladores cometen la tontería de subir miles de archivos HTML al servidor, con la idea de que sea todo rápido y fácil de darle mantenimiento, nada más errado que la realidad.

Esta práctica puede ocasionar más contras que pros, y ahora explico el porqué no se debe hacer, y si se hace, como resolverlo usando lenguajes dinámicos y/o gestores de contenidos.

  1. Problema de rendimiento y gestionar archivos
    Cuando una persona sube 10 mil archivos en HTML, con sus estilos en CSS y demás elementos como imágenes, audios y video; el servidor debe:
    – Indexar cada archivo dentro del sistema de archivos
    – Abrir y cerrar cientos o miles de conexiones de lectura cuando un usuario solicita una sola página.
    – Procesar más tiempo en cada búsqueda, además de tener latencia en respaldar toda la información y provoca problemas al sincronizar la información
    Todo esto genera:
    – Cargas lentas del servidor, más si es uno con sistema de disco duro mecánico (HDD) o de almacenamiento compartido (servidores virtuales, por ejemplo).
    – Problemas al respaldar, ya que miles de archivos pequeños, es más tardado y costoso
    – Riesgos de archivos corrompidos al pasar del tiempo, e incluso de pérdida de archivos completos, esto si la estructura de las carpetas no está bien organizada.
    Traducción: El sistema de archivos no está diseñado para ser una base de datos.
  2. Dificultad para mantener y actualizar contenido
    Si llega el caso que se necesita cambiar el encabezado, algo del menú o el pie de página de este sitio web. Se tiene que hacer esta modificación en al menos 10,000 archivos HTML, teniendo que:
    – Editar cada archivo manualmente
    – Usar un script que busque y reemplace ese texto en masa, arriesgándose a tener errores.
    – Si se cambia el diseño, ya sea por alguna temporalidad, se deben regenerar todos los archivos
    – Si se cambia solamente una URL, o alguna estructura, muchos enlaces se romperían, haciendo ilegible el visualizar el sitio.
    Traducción: El mantenimiento se vuelve insoportable, al borde de renunciar el proyecto por este dilema.
  3. Consumo excesivo de espacio y tiempos para sacarlo a producción
    Por más chico que sea el archivo HTML, termina ocupando espacio adicional en el disco, debido a la estructura de bloques que tiene tanto el sistema de archivos como el sistema operativo del servidor.
    Y ya ni hablemos de:
    – Las transferencias de archivos por FTP o SSH, ya que se vuelven lentas; mucho más si se usan conexiones inestables.
    – Y las actualizaciones o movimientos para sacar esto a producción, pueden tardar horas enteras.
    Traducción: Esta transferencia impacta en costos de almacenamiento y tiempos de operación.

Solución: generar contenido dinámico con PHP.

En lugar de crear 10,000 archivos HTML estáticos, puedes usar PHP para generar contenido dinámico.

Se puede usar cualquier otro lenguaje de programación dinámico, pero para este propósito del artículo, quería enfocarlo con PHP.

Cómo funciona

En lugar de almacenar miles de archivos, guardas la información (título, contenido, fecha, imagen, etc.) en una base de datos.
Luego, una sola plantilla PHP o WordPress genera la página de forma dinámica al ser solicitada.

Ejemplo básico en PHP:

<?php
// archivo: pagina.php
$id = $_GET['id']; // ID del contenido
$conexion = new mysqli("localhost", "usuario", "contraseña", "base_datos");
$resultado = $conexion->query("SELECT * FROM paginas WHERE id = $id");
$pagina = $resultado->fetch_assoc();

echo "<h1>{$pagina['titulo']}</h1>";
echo "<p>{$pagina['contenido']}</p>";
?>

Esto reemplaza a miles de archivos HTML estáticos. Solo necesitas un archivo PHP que transmita todo en su respectiva proporción, y puede modificar todo de manera sencilla.

Al final este sitio será más rápido, ya que el contenido dinámico se puede cachear automáticamente, el mantenimiento será infinitamente más sencillo y puede escalar sin saturar el servidor de archivos.


Publicado

en

, , ,

por

Etiquetas:

Comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *