---
title: "Benchmark de Astro 7: tiempos de compilación reducidos a la mitad en un sitio de 743 páginas"
description: "Astro 7 incluye un compilador en Rust y Vite 8. Recompilé el mismo sitio de 743 páginas en Astro 6 y Astro 7 y el tiempo total de compilación bajó de 103 s a 47 s."
date: 2026-07-01
categories: ["web-development"]
tags: ["astro","performance"]
---

import Notice from "@components/widgets/Notice.astro";
import { Picture } from "astro:assets";
import cfAstro6 from "@assets/images/26/07/astro-6-cloudflare-page-build.webp";
import cfAstro7 from "@assets/images/26/07/astro-7-cloudflare-pages-build.webp";

Astro 7 llegó a su versión estable el 22 de junio de 2026, y por una vez el «más rápido» de las notas de la versión no es puro marketing. El compilador de `.astro`, la pieza que convierte tus componentes en HTML y JS, se reescribió de Go a Rust. Yo quería una cifra real en lugar de una promesa de changelog, así que recompilé exactamente este sitio, las 743 páginas, en Astro 6 y de nuevo en Astro 7, justo antes y justo después de ejecutar la actualización.

El tiempo total de compilación bajó de 103 segundos a 47 segundos. Mismo contenido, misma máquina, mismo `astro.config.mjs`. Aquí está la salida real de la CLI, qué hay detrás de la mejora y cómo aproveché la actualización como excusa para arreglar también algunos problemas que llevaban tiempo pendientes en mi [tema de blog para Astro](https://github.com/bitdoze/bitdoze-astro-theme).

Si en lugar de actualizar un blog existente estás empezando uno desde cero, la [guía gratuita de Astro + Cloudflare](/es/crear-blog-astro-gratis/) ya da por sentado Astro 7 desde el primer `npm install`.

## La prueba de rendimiento

Ambas ejecuciones son `bun run build:ci` contra el mismo repositorio, una tras otra, cambiando solo las versiones de las dependencias entre medias.

**Astro 6.1.9:**

```
08:32:14 [build] ✓ Completed in 101.77s.
08:32:14 [build] 743 page(s) built in 103.00s
08:32:14 [build] Complete!
```

**Astro 7.0.4:**

```
09:29:06 [build] ✓ Completed in 45.08s.
09:29:06 [build] 743 page(s) built in 46.92s
09:29:06 [build] Complete!
```

| Métrica | Astro 6 | Astro 7 | Cambio |
|---|---|---|---|
| `✓ Completed in` | 101.77s | 45.08s | 2,3x más rápido |
| `page(s) built in` (743 páginas) | 103.00s | 46.92s | 2,2x más rápido |
| Páginas por segundo | ~7.2 | ~15.8 | +120% |

Nada más cambió entre las dos ejecuciones. Ni caché nueva, ni ajustes de configuración, ni menos páginas. El simple cambio de versión redujo la compilación a la mitad.

## También es más rápido en Cloudflare Pages

El registro de la CLI de arriba es la cifra limpia y controlada. Lo que realmente notas es cuánto tarda un despliegue, así que también extraje los registros de compilación de Cloudflare Pages de este sitio para ambas versiones.

**Astro 6, Cloudflare Pages:**

<Picture formats={["webp"]} fallbackFormat="webp" src={cfAstro6} alt="Registro de compilación de Cloudflare Pages para bitdoze.com con Astro 6, terminando en unos 7 minutos" />

**Astro 7, Cloudflare Pages:**

<Picture formats={["webp"]} fallbackFormat="webp" src={cfAstro7} alt="Registro de compilación de Cloudflare Pages para bitdoze.com con Astro 7, terminando en unos 2 minutos" />

| Dónde | Astro 6 | Astro 7 |
|---|---|---|
| `astro build` local (743 páginas) | 103.00s | 46.92s |
| Compilación en Cloudflare Pages | ~7 min | ~2 min |

La cifra de Cloudflare cubre más que el compilador: clonar el repositorio, instalar dependencias, ejecutar la compilación y luego subir y desplegar el resultado. Aun así bajó de unos 7 minutos a unos 2 minutos, y esa es la cifra que realmente importa, ya que Cloudflare Pages encola y factura las compilaciones por tiempo total, no solo por el paso de `astro build`.

## Por qué es realmente más rápido

No es ningún misterio una vez que miras lo que se ha publicado:

- **El compilador ahora es Rust.** El compilador de `.astro` a HTML/JS de Astro se reescribió de Go a Rust y se distribuye como `@astrojs/compiler-rs`. Combinado con el pipeline de Markdown basado en Rust que ya llegó en Astro 6.4, los sitios con mucho contenido son los que más ganan, y la mayoría de las 743 páginas de este sitio son artículos en Markdown/MDX que pasan directamente por ese pipeline.
- **Vite 8 debajo.** Astro 7 funciona sobre Vite 8, que sigue apoyándose en Rolldown, el bundler de Vite basado en Rust, para más partes de la compilación.
- **Nada que configurar.** Ambos cambios son internos de la toolchain. No toqué ni una sola opción de `astro.config.mjs` para obtener la mejora de velocidad.

<Notice type="warning" title="Un breaking change que debes comprobar antes de actualizar">
El compilador de Astro 7 ya no corrige silenciosamente el HTML inválido como hacía el anterior. Las etiquetas sin cerrar como `<div>Hello` y los atributos sin terminar ahora lanzan un error de compilación en lugar de autocorregirse. Ejecuta un `astro build` completo en local justo después de actualizar. Si algo se rompe, el error apunta al archivo y a la línea exactos, y casi siempre es una etiqueta suelta que el compilador anterior había estado parcheando sin hacer ruido.
</Notice>

## Actualizar tu propio proyecto

La propia herramienta de Astro hace la mayor parte del trabajo:

```bash
npx @astrojs/upgrade
```

Dos cosas que comprobar cuando termine:

1. **Node.js 22.12 o superior.** Astro 7 elevó la versión mínima de Node. Compruébalo en tu máquina y en cualquier CI o plataforma de hosting que realmente compile tu sitio, no solo en local. Una versión de Node desactualizada en el servidor es la forma más común de que una compilación que funciona en local falle al desplegar.
2. **Versiones fijadas de Vite.** Si tu `package.json` tiene una entrada `overrides` o `resolutions` que fija Vite a la v7, súbela a la v8. Astro 7 requiere Vite 8, y un pin antiguo lo frenará sin un error de compilación que apunte claramente a la causa real.

Después compila una vez en local antes de hacer push. Si el parser más estricto detecta algo, arreglas esa etiqueta y listo.

## Qué cambié en bitdoze.com

La prueba de 743 páginas de arriba es este mismo blog. La parte relevante del diff de `package.json`:

| Paquete | Antes | Después |
|---|---|---|
| astro | 6.1.9 | 7.0.4 |
| @astrojs/mdx | 5.0.4 | 7.0.0 |
| @tailwindcss/vite | 4.2.4 | 4.3.2 |
| sharp | 0.34.5 | 0.35.2 |
| typescript | 5.9.3 | 6.0.3 |

También activé `dangerouslyProcessSVG: true` en la configuración de imágenes. Todos los artículos de este blog usan un SVG como imagen principal, este incluido, y ese ajuste permite que los componentes `<Image>` y `<Picture formats={["webp"]} fallbackFormat="webp">` de Astro pasen esos SVG por el mismo pipeline de procesamiento que las imágenes rasterizadas en lugar de dejarlos pasar sin tocar.

## También actualicé el Bitdoze Astro Theme

Muchos lectores de aquí parten del [Bitdoze Astro Theme](https://github.com/bitdoze/bitdoze-astro-theme) en lugar de un proyecto Astro en blanco, así que también lo migré a Astro 7 y aproveché la ocasión para arreglar algunas cosas que llevaban tiempo molestándome:

- **Actualización de dependencias:** Astro 6.1.9 → 7.0.3, `@astrojs/mdx` 5 → 7, Vite 7.3.2 → 8.1.0, Tailwind CSS 4.2.4 → 4.3.2.
- **Una suite de tests de verdad.** Vitest ahora cubre la lógica de slugs y publicación, y `npm run verify` ejecuta `astro check`, los tests y una compilación de producción en un solo comando.
- **Una función decide qué es público.** Un nuevo helper `isPublishedPost()` centraliza la comprobación de borradores y fechas futuras que antes estaba copiada y pegada en las páginas, el RSS y la búsqueda.
- **Los slugs ya no dependen de las URL canónicas.** Ahora hay un campo `slug` explícito en el frontmatter. Antes la ruta se derivaba de la URL `canonical`, así que cambiar tu canonical podía cambiar tu ruta sin avisar.
- **Un esquema de contenido más estricto.** `description`, `date` y al menos un autor son obligatorios en tiempo de compilación, en lugar de recurrir silenciosamente a valores vacíos por defecto.
- **Una corrección del sitemap.** Las páginas de etiquetas y la página 404 ya no se cuelan en el sitemap.
- **Fijado a Node 22.12** con un archivo `.node-version`, para que el CI y cada colaborador compilen contra el runtime que Astro 7 realmente espera.

Nada de eso aparece en el titular de una versión, pero es la diferencia entre un tema que resulta que compila y uno donde las reglas de enrutado y publicación se aplican de verdad. Si usas el tema, descarga el último `main` y ejecuta `npm run verify` antes de desplegar.

## ¿Deberías actualizar ahora?

Para la mayoría de sitios de contenido, sí. La ganancia de rendimiento es real y gratis: no reescribes nada para obtenerla. El único riesgo es el análisis de HTML más estricto, y ese riesgo se limita solo: o compila limpio o te da un error preciso que corregir. Ejecuta el comando de actualización, comprueba tu versión de Node y cualquier pin de Vite, compila en local y despliega.

## Artículos relacionados

- [Crea un blog gratis con Astro y Cloudflare](/es/crear-blog-astro-gratis/)
- [Optimización de la velocidad de compilación de Astro: de 35 a 127 páginas por segundo](/astro-ssg-build-optimization/)
- [Desplegar un blog de Astro en Cloudflare](/deploy-astrojs-cloudflare/)
- [Astro DB con Bunny Database](/astro-db-bunny-database/)