Este artículo lo quería dedicar a la organización de proyectos web y a la mejora de carga de archivos estáticos que muchas veces por las prisas no se llegan a optimizar.
En ocasiones, para proyectos complejos, nos gusta fragmentar el código de javascript en pequeños archivos para que cada uno de ellos corresponda a la programación de ciertos componentes, su comportamiento... o que en vez de crear un archivo .css con miles de líneas, preferimos crear un archivo para maquetar nuestro template (template.css), otro archivo para el menú principal (main_menu.css), otro para las tablas (tables.css)... y así hasta X archivos...
Ésta organización es ideal, porque cuando quiera modificar la apariencia de mis tablas, sólo tendré que abrir ese archivo en cuestión, cambiar las clases necesarias, subirlo a mi servidor y listo. Todo bonito de nuevo ;)
Ahora bien, si acabas con 25 archivos .css y otros tantos .js (25 + tantos = X), piensa que cada vez que cargas la página web (al menos la primera vez, que no tienes nada en caché) tu navegador va a hacer X llamadas a esos archivos... estará esperando X respuestas... las recibirá y las procesará para que todo quede bien maquetado y con el comportamiento óptimo... pero imagínate que tienes que hacer una llamada a 30 amigos... 1 a uno.. para eso se crearon los grupos de Whatsapp, una lata, verdad¿? :P
Pues bien, para evitar eso, en mis proyectos, tengo un pequeño método, que recorre mis archivos estáticos, los agrupa, minimiza y lo guarda en un archivo para ser servido al cargar mi páginas webs... de esta forma, al cargar mi página, sólo se pedirá un archivo .css y/o .js, algo más pesado, pero sólo 1 vez...
Como has podido observar, uso 2 métodos en el código:
- fechaModificado() => me devuelve la fecha que tiene el archivo en timestamp, si no encuentra el archivo, me devolverá la dirección que le he enviado para podre comprobar porqué ha fallado.
- minSCRIPT() => me permite quitar los tabuladores, retornos de carro y alguna cosa más de los archivos, sé que es muy mejorable, pero suficiente para el ejemplo, se admiten sugerencias ^_^¡
Además, para que el navegador sepa que el archivo .css de mi proyecto está o no actualizado desde la última vez que se cargó la página web, le añado la fecha que obtenemos de $fechaMiProyecto. Dando como resultado "1669034198"