Add an APCu persistent object cache#7
Merged
Merged
Conversation
WordPress issues many database queries per page, most of them cached through its object cache — which is non-persistent by default, so every request re-queries. When the database is remote (Cloudflare D1 over the SQLite driver's HTTP transport), each query is a round trip, making this the dominant page-load cost. Add APCu to the PHP build and ship an APCu-backed object-cache.php drop-in, installed by the entrypoint as wp-content/object-cache.php (disable with WORDPRESS_OBJECT_CACHE=none). Backed by shared memory, the cache persists across all requests a container instance serves, so autoloaded options, transients, post/term/meta lookups, etc. are served from memory instead of re-querying the database. The drop-in implements the full WP_Object_Cache contract (persistent and non-persistent groups, global groups, multi-key ops, incr/decr, grouped and runtime flushes) and self-disables when APCu is unavailable. Verified against the built image: APCu loads under ZTS, the drop-in is valid, and values persist across a runtime flush. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
WordPress issues many database queries per page, most of them cached through its object cache — which is non-persistent by default, so every request re-queries. When the database is remote (Cloudflare D1 over the SQLite driver's HTTP transport), each query is a round trip, making this the dominant page-load cost.
Add APCu to the PHP build and ship an APCu-backed object-cache.php drop-in, installed by the entrypoint as wp-content/object-cache.php (disable with WORDPRESS_OBJECT_CACHE=none). Backed by shared memory, the cache persists across all requests a container instance serves, so autoloaded options, transients, post/term/meta lookups, etc. are served from memory instead of re-querying the database.
The drop-in implements the full WP_Object_Cache contract (persistent and non-persistent groups, global groups, multi-key ops, incr/decr, grouped and runtime flushes) and self-disables when APCu is unavailable. Verified against the built image: APCu loads under ZTS, the drop-in is valid, and values persist across a runtime flush.