Noticias

Smart Static Panels por Gustavo Carriquiry

Existe una eterna discusión entre si es mejor tener páginas estáticas o dinámicas. Las páginas estáticas son páginas HTML que residen en un servidor y cuando un usuario las accede, son bajadas a su "browser". Así funcionan muchísimos sitios en Internet.

Existe una eterna discusión entre si es mejor tener páginas estáticas o dinámicas. Las páginas estáticas son páginas HTML que residen en un servidor y cuando un usuario las accede, son bajadas a su "browser". De esta manera funcionan muchísimos sitios en Internet. Las páginas dinámicas son páginas que en realidad no existen como HTML (no existen físicamente de forma permanente) sino que tienen asociado un programa que, cuando se las invoca, se ejecuta en el servidor (en el sitio) y construye en el momento una página HTML, es decir, en ese momento la genera y la devuelve al cliente.

¿Cual es la gran ventaja de las páginas dinámicas?
Estas páginas normalmente implican consultas a una base de datos y como resultado envían el archivo HTML al cliente, con lo cual cuando un cliente accede a ellas produce la ejecución del programa y por ende están siempre actualizadas según la base de datos.
Un caso típico de esto que no podría ser de otro modo es paullieronline.com en este caso es imposible tener HTMLs (estáticas) que reflejen la cotización de las acciones o el ranking de jugadores pues deben estar siempre actualizadas.

¿Que problemas tienen asociadas las páginas dinámicas?.
1. Requieren un servidor más potente porque no es sólo "servir" un archivo HTML sino que para cada página se debe ejecutar un programa. Es decir, no sólo requieren un WebServer sino que también un Application Server.
2. Requieren una base de datos on-line, es decir, el programa debe ejecutar contra alguna base de datos por lo cual además precisan un DataBase Server.
3. Los puntos 1 y 2 implican que el "hosting" (hospedaje) de las páginas dinámicas requiera más componentes por lo cual es más difícil encontrar donde hacerlo y habrá que pagar más por ello. O sea, hay muchos proveedores que ofrecen "hosting HTML" y sólo algunos de ellos "hosting con App Server y DB Server".
4. Seguramente son más lentas que las estáticas. Esto es, siempre será más rápido bajar un HTML que reside en un servidor que ejecutar un programa que genera ese HTML accediendo a la base de datos y luego bajarlo. De todos modos esto dependerá de la conexión del cliente puesto que si el cliente tiene una conexión lenta la diferencia de performance no se notará (desde su punto de vista). Es decir, si ejecutar el programa lleva 3 segundos y bajar la página 30 segundos, el cliente utilizando páginas estáticas demorará 30 segundos en obtenerla y dinámicas 33 segundos por lo cual la diferencia es mínima. Desde el punto de vista de la potencia requerida en el servidor todo es bastante diferente y se necesita mucho más potencia para la misma velocidad de servicio de páginas dinámicas con relación a páginas estáticas.

¿Que problemas tienen asociadas las páginas estáticas?.
La actualización de las mismas. En muchos casos es prácticamente inviable implementar una solución con páginas estáticas. Supongamos que se tiene un sitio donde se venden electrodomésticos y se tienen páginas estáticas, un día se decide bajar el precio de todos los productos de determinado tipo que tengan determinadas características y donde exista excedente de stock. Esto implicaría hacer un análisis de todos los productos y "editar" muchísimas páginas, lo cual si son estáticas es inviable.
Otro caso claro es cuando la presentación de la página depende del cliente y sus preferencias, no se pueden tener multiplicadas las páginas por la cantidad de clientes.
En definitiva, cada una de las soluciones tiene sus pros y sus contras, entonces ¿cuál es la solución real?.
Como en todo, los extremos no son buena solución y lo mejor es el punto de equilibrio entre ambas. Supongamos el caso de un "diario digital" éste a priori parece ser claramente estático, es decir, un grupo de páginas que componen la edición X y son creadas a determinada hora de cierre. Todos los clientes leen esas mismas páginas. Ahora bien, que tal si se quisiera mostrar en la portada o en una determinada sección (por ejemplo, la sección económica que contiene información de la bolsa) constantemente actualizada?.
Habrá secciones del diario que son claramente estáticas (resultados deportivos, etc) y secciones que son claramente dinámicas (cotización de las acciones, etc).
GeneXus tenía la posibilidad de generar páginas dinámicas, ahora agrega la posibilidad de generar también SSP (Smart Static Panels o páginas estáticas inteligentes). Esto es, por cada objeto de una base de conocimientos se determina si el mismo será "SSS" o "Dynamic".
Si es "Dynamic" queda claro que debe generarse simplemente un programa que reside en un servidor y al ser ejecutado retorna un HTML a su invocador.
El "SSP" implica que el programa no retornará el HTML correspondiente sino que lo almacenará en el disco de modo tal que pueda ser consultado a posteriori directamente y sin la necesidad de ejecutar el programa "generador".
Además provee todos los mecanismos de resolución de llamadas entre los objetos, es decir, una página estática puede llamar a una dinámica y viceversa. Con esto el desarrollador podrá definir cuales de los objetos corresponden a páginas de un tipo o de otro y obtener lo mejor de los dos mundos.
Por último Genexus posee mecanismos inteligentes de generación de esas páginas "SSP" de modo tal de ejecutar un proceso que recorra el mapa del sitio y genere (o re-genere según corresponda) todos los HTMLs afectados. Por ejemplo, supongamos que tenemos "Partido", "Jugador", "Gol". Supongamos que queremos generar las páginas "Partido": el sistema verá (en la base de datos) que partidos existen y generará automáticamente la página adecuada para cada uno. Luego le asociará los links para cada uno de los jugadores adecuados y, para cada uno de los goles de cada partido, creará la página correspondiente. Por otra parte generará una página para cada jugador existente y, para cada una de ellas, le asociará la lista de los goles de ese jugador y, para cada línea de ésta, generará la página del gol (a menos que ya esté generada, en cuyo caso mantendrá la preexistente).
Veamos que, en un portal de noticias (deportivo, por ejemplo) en un momento dado alguien pide una página, si la construimos dinámicamente, probablemente en la próxima hora otros 5000 usuarios la accedan y se construirá 5000 veces. Con este mecanismo y un esquema de "triggers" inteligentes implementados, por ejemplo, mediante Work Flow, podemos generar cada página mucho más eficientemente: la primera vez o cuando se ha producido un cambio para ella.
Esto permite mayor velocidad en el despliegue de las páginas y utilización de potencias de servidor mucho menores.
Realmente es muy bueno dar por tierra con una discusión de nunca acabar: ¿implemento dinámicas o estáticas?, pregunta sin sentido cuando puedo tener lo mejor de los dos mundos con las SSPs.