Performance & ISR

Caching strategies and ISR configuration for large WooCommerce catalogs

WooNuxt is optimized for performance at every layer. For large catalogs, Incremental Static Regeneration (ISR) lets you cache product pages at the CDN edge while still serving fresh data.

ISR (Incremental Static Regeneration)

ISR pre-renders pages on first request and caches them for a configurable TTL. Subsequent requests are served from cache — zero cold-start latency — until the TTL expires and the page is regenerated in the background.

This is ideal for catalogs with 10,000+ products where full nuxt generate would take too long.

Which Routes Use ISR

The following routes are ISR-enabled by default in woonuxt_base/nuxt.config.ts:

Route PatternBehavior
/product/**ISR with CATALOG_ISR_TTL
/product-category/**ISR with CATALOG_ISR_TTL
/productsISR with CATALOG_ISR_TTL
/products/** (pagination)ISR with CATALOG_ISR_TTL
/checkout, /order-summaryprerender: false (always live)

Configuring ISR TTL

Set CATALOG_ISR_TTL in your environment variables (value in seconds):

# Cache product pages for 1 hour (default)
CATALOG_ISR_TTL=3600

# Cache for 24 hours (high-traffic stores with infrequent updates)
CATALOG_ISR_TTL=86400

# Cache for 5 minutes (stores with frequent price/stock changes)
CATALOG_ISR_TTL=300
💡

After updating a product in WooCommerce, the cache for that product's page will be stale until the TTL expires. Pair ISR with a Build Hook (configured in WooNuxt Settings) to trigger a full rebuild on important changes.

Requirements

ISR requires a server runtime — it does not work with pure static output (nuxt generate). Deploy with:

  • Netlify (serverless functions)
  • Vercel (edge functions)
  • Node.js server (nuxt build + node .output/server/index.mjs)

Image Optimization

WooNuxt uses @nuxt/image to automatically optimize WooCommerce product images.

Configure Allowed Domains

You must list all image domains in NUXT_IMAGE_DOMAINS:

NUXT_IMAGE_DOMAINS=yourwordpress.com,cdn.yourwordpress.com

Multiple domains are comma-separated. Without this, images from those domains will not be optimized.

Netlify Image CDN

When deploying to Netlify, @nuxt/image automatically uses Netlify's Image CDN. The base config already ignores Netlify CDN URLs during prerendering to avoid double-optimization:

// Already configured in woonuxt_base/nuxt.config.ts
nitro: {
  prerender: {
    ignore: ['/_netlify/images']
  }
}

Build Performance

For SSG builds with large catalogs:

export default defineNuxtConfig({
  extends: ['./woonuxt_base'],
  nitro: {
    prerender: {
      concurrency: 10,    // Pages prerendered in parallel (default)
      interval: 1000,     // ms between batches (avoids WordPress rate limits)
      failOnError: false, // Continue build if a product page fails
    },
  },
})

Increase concurrency if your WordPress server can handle more parallel requests. Lower interval if you hit WordPress rate limiting.

Designed and Built by Scottyzen | © 2026 WooNuxt | All rights reserved