Las aplicaciones de la mayoría de las páginas de servidor activo (ASP) crean datos de formato HTML presentados a los usuarios a través de la concatenación de cadenas. Este artículo compara varias formas de crear este flujo de datos HTML, y en ciertos casos algunos métodos superan a otros en el rendimiento. Este artículo supone que ya tiene algún conocimiento de ASP y la programación de Visual Basic.
Al escribir una página ASP, el desarrollador en realidad crea un flujo de texto formateado que se escribe en el cliente web a través del objeto de respuesta proporcionado por el ASP. Hay una variedad de formas de crear este flujo de texto, y el método que elija tendrá un gran impacto en el rendimiento y la escalabilidad de su aplicación web. Muchas veces, cuando ayudé a los clientes a optimizar el rendimiento de sus aplicaciones web, descubrí que una de las formas más efectivas es cambiar la forma en que se crean las transmisiones HTML. Este artículo introducirá varias técnicas comunes y probará su impacto en el rendimiento de una página ASP simple.
Muchos desarrolladores de ASP siguen los buenos principios de ingeniería de software y modularan su código tanto como sea posible. Este diseño generalmente utiliza incluir archivos que contienen funciones que formatan partes discontinuas específicas de la página. La salida de cadena de estas funciones (generalmente código de tabla HTML) puede crear una página completa a través de varias combinaciones. Algunos desarrolladores han mejorado este enfoque al mover estas funciones HTML a los componentes de Visual Basic Com, con la esperanza de aprovechar el rendimiento adicional proporcionado por el código compilado.
Aunque este enfoque de diseño es bueno, el método utilizado para crear cadenas que componen estos componentes de código HTML discontinuos tendrá un gran impacto en el rendimiento y la escalabilidad del sitio web, ya sea que la operación real se realice en un archivo ASP o en un componente COM de Visual Basic.
Consulte el siguiente fragmento de código de la función WriteHTML. Un parámetro llamado Datos es solo una serie de cadenas que contienen algunos datos que se formatearán en una estructura tabular (por ejemplo, los datos devueltos de una base de datos).
Función writeHtml (data) dim nrepfor nrep = 0 a 99 shtml = shtml & vbcrlf _ & "<tr> <td>" & (nrep + 1) & "</td> <td>" _ & data (0, nrep) & "</td> <td>" _ & data (1, nrep) Datos (2, nrep) & "</td> <td>" _ & data (2, nrep) & "</td> <td>" _ & data (3, nrep) & "</td> <td>" _ & data (4, nrep) y "</td> <td>" _ & data (5, nrep) & & & & & & & & & & & y data "</td> </tr>" nextWriteHtml = shtmlend función
Este es un método común utilizado por muchos desarrolladores ASP y Visual Basic al crear código HTML. El texto contenido en la variable SHTML se devuelve al código de llamada y se escribe al cliente usando Respuesta.Write. Por supuesto, esto también se puede expresar como un código similar que incorpora directamente una página que no contiene la función WriteHTML. El problema con este código es que los tipos de datos de cadena (BSTR o cadenas básicas) utilizados por ASP y Visual Basic no pueden cambiar la longitud. Esto significa que cada vez que cambia la longitud de la cadena, la representación original de la cadena en la memoria se corrompe, y se creará una nueva representación que contenga los nuevos datos de cadena: esto aumentará el funcionamiento de la asignación de la memoria y la memoria de acuerdo. Por supuesto, ASP y Visual Basic han resuelto esto para usted, por lo que la sobrecarga real no aparecerá de inmediato. La asignación y la memoria no alcanzada requieren que el código de tiempo de ejecución básico desbloquee cada bloqueo dedicado, por lo que requiere muchas sobrecargas. Este problema se hace particularmente evidente cuando las cadenas se vuelven grandes y grandes trozos de memoria se deben asignar y desaslocarse de manera rápida y continua, ya que ocurre durante la concatenación de cuerdas grandes. Aunque este problema tiene poco impacto en un entorno de un solo usuario, puede causar serios problemas de rendimiento y escalabilidad en entornos de servidor (por ejemplo, aplicaciones ASP que se ejecutan en un servidor web).