Cuatro veces la misma librería
El 31 de agosto de 2026, abrir la página del Archivo Municipal de Pamplona costaba 1.596.047 bytes de programas para pintar una página de 40.985: unas treinta y nueve veces más código que página. Entre esos programas estaba la misma librería cuatro veces, en sus cuatro presentaciones, una detrás de otra. Desde el 21 de septiembre, ya no.
- Dominio
- archivo.pamplona.es
- Guardado
- 31 AGO 2026
- Comprobado en vivo
- 15 SEP 2026
- Citas
- 5 en 1 fichero guardado
- Lectura
- unos 3 min

Una página web es un texto. Lo que la hace pesada suele ser lo que manda traer: imágenes, tipografías y, sobre todo, programas. Cada etiqueta de script es un encargo, baja este fichero antes de seguir. El visitante no los ve, no los pide y no puede decir que no; los paga en tiempo de espera y en datos de su tarifa.
Esta página hacía veintidós de esos encargos, a veintiún ficheros distintos. Los contamos uno a uno y buscamos cada fichero en lo que guardamos del sitio: están todos, y suman 1.596.047 bytes. La página que los pide son 40.985. Por cada byte de página, el navegador se traía casi treinta y nueve de programa. La cifra importa menos que el camino hasta ella.

Cuatro de los encargos eran la misma librería: Bootstrap, la que da forma a los botones y las rejillas de media internet. Bootstrap se publica en varias presentaciones, la normal, la comprimida, la que trae dentro sus dependencias y la comprimida de esa, y hay que elegir una. Aquí estaban las cuatro, de la misma versión: bootstrap.min.js, bootstrap.bundle.js, bootstrap.bundle.min.js y bootstrap.js. Entre las cuatro, 427.589 bytes de lo mismo.
- Copia
- archivo
- Guardado
- 31 ago 2026
- Peso
- 41,0 kB
- sha256
- 255a5953bf19…
| 280 | var scriptExists = false; |
| 281 | try { if (xajax.isLoaded) scriptExists = true; } |
| 282 | catch (e) {} |
| 283 | if (!scriptExists) { |
| 284 | alert('Error: the xajax Javascript component could not be included. Perhaps the URL is incorrect?\nURL: ../scripts/xajax_core.js'); |
| 285 | } |
| 286 | }, |
| 287 | 6000 |
| 288 | ); |
| 289 | /* ]]> */ |
| 290 | </script> |
| 291 | …src="../ |
| 292 | $(window).resize(function() { |
| 293 | posicionarMenu(); |
| 294 | }); |
| 295 | </script> |
| 296 | <link rel="stylesheet" href="../ |
| 297 | <script> |
| 298 | function cambiarOperador(valor){ |
| 299 | } |
| 300 | |
| 301 | </script><!-- MODAL DE EMAIL --> |
| 302 | <div class="modal fade" id="miconectarse" role="dialog"> |
Cargar cuatro veces la misma librería no rompe la página, y por eso no se nota. Las cuatro se bajan, las cuatro se ejecutan y cada una va sustituyendo a la anterior: al final queda la última, y el trabajo se ha hecho cuatro veces. Es la versión informática de comprar el mismo periódico en cuatro quioscos por si acaso.
El fichero más pesado era jquery-ui.js, con 539.414 bytes él solo, algo más de un tercio del total, y llegaba sin comprimir: con los espacios, los saltos de línea y los comentarios que sirven para leerlo mientras se programa y que no hacen falta para ejecutarlo. Sus autores publican también la versión comprimida, jquery-ui.min.js: de una a otra hay cuatro caracteres en la dirección.
- Copia
- archivo
- Guardado
- 31 ago 2026
- Peso
- 41,0 kB
- sha256
- 255a5953bf19…
| 285 | } |
| 286 | }, |
| 287 | 6000 |
| 288 | ); |
| 289 | /* ]]> */ |
| 290 | </script> |
| 291 | <SCRIPT src="../ |
| 292 | $(window).resize(function() { |
| 293 | posicionarMenu(); |
| 294 | }); |
| 295 | </script> |
| 296 | …<script src="../ |
| 297 | <script> |
| 298 | function cambiarOperador(valor){ |
| 299 | } |
| 300 | |
| 301 | </script><!-- MODAL DE EMAIL --> |
| 302 | <div class="modal fade" id="miconectarse" role="dialog"> |
| 303 | <div class="modal-dialog modal-lg"> |
| 304 | <!-- Modal content--> |
| 305 | <div class="modal-content"> |
| 306 | <div class="modal-header"> |
| 307 | <span class="modal-title h4">Entrar a la aplicación....</span> |
Debajo había más capas. Estaba xajax, una librería para hablar con el servidor sin recargar la página. Estaban tres utilidades de formularios del mismo paquete, JavaScripTools: JavaScriptUtil, inputMask, Parsers. Y estaba un fichero llamado main.js, dentro de una carpeta llamada galleta, que es la palabra cookie traducida y lo que ese fichero maneja, pedido dos veces: la misma dirección, el mismo fichero, dos encargos.
- Copia
- archivo
- Guardado
- 31 ago 2026
- Peso
- 41,0 kB
- sha256
- 255a5953bf19…
| 264 | function xajax_suscritodsi(){return xajax.call("suscritodsi", {parameters: arguments});} |
| 265 | function xajax_ |
| 266 | function xajax_ |
| 267 | function xajax_ |
| 268 | function xajax_ |
| 269 | function xajax_ |
| 270 | function xajax_ |
| 271 | function xajax_ |
| 272 | function xajax_ |
| 273 | /* ]]> */ |
| 274 | </script> |
| 275 | <script src="../ |
| 276 | <script> |
| 277 | /* <![CDATA[ */ |
| 278 | window.setTimeout( |
| 279 | function () { |
| 280 | var scriptExists = false; |
| 281 | try { if (xajax.isLoaded) scriptExists = true; } |
| 282 | catch (e) {} |
| 283 | if (!scriptExists) { |
| 284 | alert('Error: the xajax Javascript component could not be included. Perhaps the URL is incorrect?\nURL: ../scripts/xajax_core.js'); |
| 285 | } |
| 286 | }, |
Y hay una cuenta más, que es la que explica el resto. Tres de los ficheros eran un calendario completo, con su traducción al español y su configuración aparte. Otro, el jquery-ui.js de medio megabyte, trae dentro su propio selector de fechas: la palabra datepicker aparece 318 veces en él. Y otro más era el selector de fechas de Bootstrap. Tres maneras distintas de elegir un día, cargadas a la vez, en la misma página. Y dos librerías más, de autores distintos, para el mismo trabajo de convertir una lista en un desplegable con buscador.
Parece sedimento, y las cabeceras de los ficheros lo fechan: el calendario lleva los años 2002 a 2005; jQuery UI, 2016; Bootstrap, 2018. Capas de épocas distintas, cada una encima de la anterior, y las de abajo todavía en su sitio: el calendario de hace más de veinte años convivía con el selector de fechas de 2016 y con el de Bootstrap. Cada fichero, por separado, tendría su motivo. El conjunto es lo que se descargaba el visitante.
Y pasaba en todo el sitio. De las 800 páginas que guardamos del Archivo Municipal, 797 cargaban esas mismas cuatro copias de Bootstrap. El 15 de septiembre de 2026 volvimos a pedir la página de inicio y seguían ahí las cuatro. El 21 quedaba una. El 26 de septiembre, ninguna: la página había cambiado de aspecto y de programas, y pide once, cuatro de ellos a servidores de fuera del ayuntamiento. El jquery-ui.js sin comprimir sigue entre ellos.
- Copia
- archivo
- Guardado
- 31 ago 2026
- Peso
- 41,0 kB
- sha256
- 255a5953bf19…
| 280 | var scriptExists = false; |
| 281 | try { if (xajax.isLoaded) scriptExists = true; } |
| 282 | catch (e) {} |
| 283 | if (!scriptExists) { |
| 284 | alert('Error: the xajax Javascript component could not be included. Perhaps the URL is incorrect?\nURL: ../scripts/xajax_core.js'); |
| 285 | } |
| 286 | }, |
| 287 | 6000 |
| 288 | ); |
| 289 | /* ]]> */ |
| 290 | </script> |
| 291 | …src="../ |
| 292 | $(window).resize(function() { |
| 293 | posicionarMenu(); |
| 294 | }); |
| 295 | </script> |
| 296 | <link rel="stylesheet" href="../ |
| 297 | <script> |
| 298 | function cambiarOperador(valor){ |
| 299 | } |
| 300 | |
| 301 | </script><!-- MODAL DE EMAIL --> |
| 302 | <div class="modal fade" id="miconectarse" role="dialog"> |
El 31 de agosto, veintidós encargos para servir una página de 40 kilobytes, y cuatro eran el mismo. El 26 de septiembre la página pide once, y ninguno es Bootstrap.
- La página http://archivo.pamplona.es/inicio/proyecto.php, guardada el 31 de agosto de 2026, mide 40.985 bytes y contiene veintidós etiquetas <script src> (contadas sin distinguir mayúsculas y con cualquier tipo de comillas) que apuntan a veintiún ficheros distintos (uno, ../galleta/main.js, aparece dos veces), cuyos tamaños suman 1.596.047 bytes medidos en los propios ficheros guardados.
- Cuatro de ellos son Bootstrap 4.0.0 en sus cuatro presentaciones (bootstrap.min.js, bootstrap.bundle.js, bootstrap.bundle.min.js y bootstrap.js), 427.589 bytes entre los cuatro.
- jquery-ui.js ocupa 539.414 bytes sin comprimir y contiene 318 veces la palabra datepicker.
- 797 de las 800 páginas guardadas del sitio cargan esas cuatro copias.
- El 15 de septiembre de 2026 la página sigue pidiendo las cuatro.
- La copia del 21 de septiembre carga solo bootstrap.js de las cuatro.
- El 26 de septiembre de 2026 la página, servida ya por https, lleva once etiquetas <script src>, ninguna de Bootstrap, cuatro de ellas en cdn.ckeditor.com o cdn.ckbox.io, y una de ellas jquery-ui.js.
- La titularidad de archivo.pamplona.es la prueba su certificado, de Izenpe, una autoridad de certificación pública, con el que sirve por https en nuestras capturas desde el 21 de septiembre, como www.pamplona.es y sedeelectronica.pamplona.es, del mismo dominio.
- No decimos cuánto tarda la página en abrirse: eso depende de la conexión de cada cual y no lo hemos medido contra ese servidor.
- No decimos que la página funcione mal: funciona.
- No decimos que sobren ficheros, sino que cuatro son la misma librería y uno está pedido dos veces; de los demás no hemos comprobado cuáles se usan.
- No decimos por qué cambió la página ni si tiene que ver con el museo: no lo sabemos.
- Y no decimos nada del contenido del Archivo Municipal, que no es lo que mira esta pieza.
De dónde sale cada cita
Cada trozo de código de esta ficha está en un fichero guardado tal como lo entregó el servidor, con su huella (sha256) y su hora. Las citas entre «» se comprueban por programa contra ese fichero antes de publicar.
- http://archivo.pamplona.es/inicio/proyecto.php31 de agosto de 2026, 16:28archivosha256 255a5953bf19e4cddbc1a185b9f72acd3136981f3ffa7f60c63fbb3f7d5f9b51
- http://archivo.pamplona.es/inicio/proyecto.php15 de septiembre de 2026, 20:28en vivo · distinto · las 5 citas siguensha256 4d12233883a2729664d4f00fbbaf3a7e364f1e0384a6d8ed4dd70c8dcad1902a
El 21 de septiembre de 2026, 3 de sus 5 citas ya no aparecían en la página. Lo que ha cambiado desde que lo contamos.