---
title: "Performance Architecture - PerfLocale"
description: "A 3-layer cache, batch-preloaded queries and conditional hook registration keep PerfLocale's own code to a small fraction of total page time."
canonical: "https://perflocale.com/features/performance/"
source: "https://perflocale.com/features/performance/"
format: "markdown"
---
# Performance Architecture

Engineered from the ground up so multilingual never means slow.

## 3-Layer Cache

In-memory, persistent (Redis/Memcached), and database caching layers. On a warm cache, translation lookups are served from memory without touching the database.

## Batch Preloading

When WordPress loads a list of posts, PerfLocale loads all translation data in a single efficient request instead of one query per post.

## Smart Query Optimization

Language filtering is added directly into WordPress database queries, so one query does the work of many. No extra overhead for your visitors. On paginated archives it also skips WordPress’s older, full-scan way of counting results in favour of a cached count, so deep pages of a large site stay fast.

## A Small Share of Page Time

On-demand loading, batched lookups, and layered caching keep PerfLocale’s own code to a small fraction of total page time. Sites over roughly 2,000 translation links should run a persistent object cache to stay in that range. Real-world page speed depends mostly on your theme, hosting, and other plugins.

## Background Processing

Long-running operations — XLIFF imports, WPML / Polylang / TranslatePress migrations, full-site string scans, bulk machine translation — move off the request path automatically. Small operations still run inline so you see the result immediately; large ones queue and the admin redirects to a live **PerfLocale → Jobs** page with progress, cancel, retry, and per-job error visibility.

The system picks Action Scheduler when WooCommerce or the standalone AS plugin is loaded (battle-tested, persistent, has its own admin UI), and falls back to WP-Cron otherwise. Either way, the dispatch decision, retry-with-backoff, per-type concurrency cap, and pause-queue toggle behave identically. State lives in a dedicated `perflocale_jobs` table with typed columns and indexed status / type / owner lookups — no public pageview ever queries it, so frontend visitors pay zero cost for an active queue. Stuck-job sweep + reactivation resume + stale-lock GC run on a daily cron so the system stays healthy without operator attention. Full [`wp perflocale jobs`](https://perflocale.com/docs/wp-cli/#jobs) CLI surface for headless / CI workflows. [Read the full Background Jobs doc →](https://perflocale.com/docs/background-jobs/)

[← Back to Features](https://perflocale.com/features/) [Production tuning →](https://perflocale.com/docs/production-tuning/)
