Scaling Strategies

This guide covers strategies for scaling Agility CMS implementations, including content scaling, performance scaling, and multi-locale scaling.

Scalability Dimensions

Content Scalability

Challenges:

  • Large content lists
  • Complex relationships
  • Frequent updates

Solutions:

  • Content Lists support pagination
  • Efficient querying with filters
  • CDN for asset delivery
  • Optimized content models

Performance Scalability

Challenges:

  • High traffic
  • Global audiences
  • Fast response times

Solutions:

  • Static generation for most pages
  • Incremental regeneration for dynamic content
  • Multi-layer caching
  • CDN for global delivery

Multi-Locale Scalability

Challenges:

  • Multiple languages
  • Locale-specific content
  • Fallback strategies

Solutions:

  • Locale-specific content instances
  • Efficient locale routing
  • Fallback to default locale
  • Shared content models

Content Scaling

Pagination

Implement pagination for large lists:

const { items, totalCount } = await getContentList({
  referenceName: "posts",
  take: 10,
  skip: (page - 1) * 10
})

Filtering

Use filters to reduce query size:

const { items } = await getContentList({
  referenceName: "posts",
  filter: "fields.categoryID:eq:5",
  take: 10
})

Efficient Queries

  • Limit results appropriately
  • Use filters at API level
  • Avoid fetching unnecessary data
  • Cache frequently accessed content

Performance Scaling

Static Generation

Pre-render pages at build time:

export async function generateStaticParams() {
  // Generate all page paths at build time
}

Incremental Regeneration

Update pages on-demand:

export const revalidate = 60 // Revalidate every 60 seconds

Caching Strategy

  • CDN Cache: Assets cached globally
  • API Cache: API responses cached
  • Application Cache: Next.js cache tags
  • Browser Cache: Client-side caching

Multi-Locale Scaling

Locale Strategy

  • Default Locale: No URL prefix
  • Other Locales: URL prefix (e.g., /fr/)
  • Content Per Locale: Separate content instances
  • Fallback: Fallback to default locale

Content Management

  • Shared Models: Content models shared across locales
  • Locale Instances: Separate content instances per locale
  • Fallback Content: Fallback to default if missing

Architecture Scaling

Horizontal Scaling

  • Frontend: Scale frontend independently
  • CMS: Agility CMS scales automatically
  • CDN: Global edge locations

Vertical Scaling

  • Optimize Queries: Efficient content queries
  • Cache Aggressively: Multi-layer caching
  • Optimize Assets: Image optimization, compression

Best Practices

  1. Plan for Growth: Design for scalability from start
  2. Optimize Queries: Efficient content queries
  3. Leverage Caching: Multi-layer caching strategy
  4. Monitor Performance: Track metrics and optimize
  5. Test at Scale: Test with realistic data volumes

Next: Security - Security best practices