Volver al blog

Cómo optimizar tus queries en Contentful para mayor velocidad y menor costo

Por qué deberías optimizar tus consultas en Contentful

Usar Contentful con GraphQL te da una flexibilidad tremenda, pero también una gran responsabilidad. Cada vez que tu aplicación solicita datos, pagas por el tamaño del payload y por el tiempo que tarda en responder. Si haces una consulta con campos innecesarios o anidados profundamente, tu sitio se ralentiza y el consumo de la API aumenta, lo cual puede encarecer el uso si estás en planes avanzados.

❓FAQ: ¿Qué significa “optimizar” una consulta en Contentful?

Significa pedir solo los datos que realmente necesitas, evitar llamadas innecesarias o anidadas, y reducir el tamaño del payload para mejorar el rendimiento y reducir costos.

Ejemplo: Consulta con exceso vs. consulta optimizada (GraphQL)

❌ Exceso de datos

query GetBlogPosts {
  blogPostCollection {
    items {
      title
      slug
      content
      author {
        name
        bio
        socialLinks
        profilePicture {
          url
        }
      }
      categoriesCollection {
        items {
          title
          description
        }
      }
    }
  }
}

✅ Optimizada

query GetBlogPostSummaries {
  blogPostCollection(limit: 5) {
    items {
      title
      slug
    }
  }
}

La versión optimizada reduce el tamaño del payload, evita campos anidados y limita el resultado a 5 entradas, ideal para una página de listado.

❓FAQ: ¿Cómo sé qué campos eliminar?

Comienza por definir qué datos necesita tu componente para renderizarse. Si no se muestra, no lo pidas.

Usa alias y fragmentos con inteligencia

GraphQL permite usar fragmentos y alias de campos, lo que ayuda a reutilizar estructuras y reducir la complejidad. Usa fragmentos para estructuras repetidas y alias cuando necesites consultar múltiples entradas del mismo tipo.

fragment AuthorInfo on Author {
  name
  profilePicture {
    url
  }
}

query GetTwoAuthors {
  author1: author(id: "ID1") {
    ...AuthorInfo
  }
  author2: author(id: "ID2") {
    ...AuthorInfo
  }
}

❓FAQ: ¿Los fragmentos solo sirven para consultas grandes?

No necesariamente. Son útiles para mantener tu código limpio y facilitar el mantenimiento en componentes reutilizables.

Pagina todo

La API de Contentful permite paginar resultados con limit y skip. Paginar colecciones grandes evita timeouts y mejora la velocidad percibida por el usuario.

query GetPaginatedPosts($skip: Int!) {
  blogPostCollection(limit: 10, skip: $skip) {
    items {
      title
    }
  }
}

❓FAQ: ¿Cuál es el mejor límite para paginar?

Lo común es entre 10 y 20 elementos por solicitud, según tu interfaz. Prueba con datos reales para ajustar.