Archivo para la etiqueta ‘programación’
Convierte (un poco) IE6 en IE8 con JavaScript
Ya hemos hablado alguna vez por aquí de los problemas que nos causa a los desarrolladores de sitios web el Internet Explorer 6, otrora buque insignia de la entrada de Microsoft en Internet, y del grave perjuicio que sigue causando a la innovación en la web (hasta el punto de que Google tuvo que dejar de soportarlo en Google Docs).
Las cosas mejoraron bastante con Internet Explorer 7, aunque en muchas cosas este navegador sigue recordando a su versión anterior. Ha habido que esperar a la versión 8 para obtener algo equiparable a un navegador moderno. Lo peor de todo esto es que debido a la política de actualizaciones de Microsoft, empeñados en ofrecer las nuevas versiones sólo a los usuarios registrados y legales de Windows (supongo que con razón), ahora mismo coexisten muchas versiones distintas de Internet Explorer, cada una con un comportamiento distinto a las anteriores. En fin.
Escribo todo esto porque hay un proyecto en Google Code muy interesante, consistente en una biblioteca JavasScript que sirve para adaptar el comportamiento de las versiones antiguas de Internet Explorer, haciéndolo lo más parecido posible al de las versiones 8 y 9. Corrige algunos (no todos, ni de lejos) problemas con el CSS y con el código HTML, además de solucionar el tradicional problema de las transparencias de los PNG.
Para utilizarlo, basta incluir en la cabecera un enlace al archivo JavaScript en cuestión. Me parece una idea fantástica, no sólo por la idea en sí, sino por la sencillez de su planteamiento.
Reducir los archivos Javascript
Llevo todo el fin de semana arreglando el código de Artefacto Server, mejorando su legibilidad y tratando de mejorar su eficiencia todo lo que sea posible. El problema de las aplicaciones web es que en cuanto empiezan a crecer se multiplican las consultas a la base de datos, la inclusión de ficheros de PHP, la descarga de archivos de estilos o de Javascript… y al final pueden llegar a ser realmente pesadas.
De momento me estoy centrando en limitar las comprobaciones en la inclusión de archivos PHP, sustituyendo los require_once() por llamadas a require() convencionales (que resultan algo más rápidas al no tener que comprobar si el archivo ya ha sido incluido), en la corrección general del código, en la optimización de las consultas a la base de datos (verdadero cuello de botella de las aplicaciones web) y en la reducción del tamaño de las páginas.
Sobre esto último, algunas secciones del panel de control de Artefacto Server tenían código CSS o Javascript escrito directamente en el archivo PHP. Esto es un problema porque incrementa el tamaño de la página que se descarga al navegador, con lo cual el tiempo de carga es mayor. Ya solucionamos esto en gran medida en Artefacto Server 3.1, pero todavía quedaban algunos módulos con ciertas particularidades sin actualizar.
La ventaja de este enfoque es que el navegador guarda en la caché los archivos y eso siempre acelera la carga. No obstante, todavía se puede dar una vuelta de tuerca más, que consiste en comprimir el código Javascript o CSS, eliminando saltos de línea, espacios, etc. Adicionalmente, se puede cambiar el nombre de las funciones y variables y reducir el código todavía más. Para no tener que hacer este trabajo a mano hay algunas opciones interesantes, y la más popular parece ser JSMin, que además es libre. Hay una implementación en PHP, jsmin-php, con la que he estado trabajando estos días. He hecho la prueba con uno de los ficheros de funciones comunes y ha pasado de 3060 a 2476 bytes, lo cual nos arroja una tasa de compresión del 20%, que no está nada mal. Otro fichero Javascript del panel de control ha pasado de 3247 a 1754, lo cual supone una reducción de casi el 50%.
Hay que decir que todo esto no va a solucionarnos ningún problema por si solo, sino que tenemos que tomarlo como una acción más de un conjunto de medidas encaminadas a mejorar la rapidez general de la aplicación.
Vía | aNieto2k