Skip to content

Releases: laruence/wp-yac-cache

1.3.1

Choose a tag to compare

@laruence laruence released this 12 Sep 04:27
  • Fixed the admin "Remove drop-in" action always reporting failure.
  • Added WP-CLI commands: wp yac deploy-dropin, wp yac update-dropin, wp yac remove-dropin.
  • Comment-query cache misses (WP_Comment_Query::get_comments() wraps an empty result as array('comment_ids' => array(), 'found_comments' => 0)) are now recognized as negative cache results and capped by YAC_OCACHE_EMPTY_TTL instead of occupying a slot forever.

1.3.0

Choose a tag to compare

@laruence laruence released this 10 Sep 04:16
  • No wp-config edit is needed any more: WP_CACHE is no longer required or reported. WordPress loads object-cache.php regardless of it — that constant only gates advanced-cache.php (page caching), which this plugin does not provide. The live CI run now boots WordPress without it to prove the point.
  • The Cache health panel became a client-side trend chart: hit rate, hits and misses over Today / Yesterday / Last 7 days, with the window's counters and the capacity diagnosis on hover. Counters are sampled every 15 minutes into a ~7-day ring.
  • Fixed the entry inspector exhausting the PHP memory limit on a busy cache: it now pages through Yac::dump() instead of accumulating the whole dump.
  • Fixed the dashboard widget reporting "0 bytes" for values occupied. The Active bar now also shows shared-memory uptime.
  • Suggested tuning raised to yac.keys_memory_size = 16M (~128K slots); 4M gives only ~32K.

1.2.2

Choose a tag to compare

@laruence laruence released this 02 Sep 06:56
  • Fixed stale shared-memory writes: within one request, wp_cache_set() on a key already written by wp_cache_add() in that same request skipped the shared-memory write, so other requests kept reading the value the add stored (the update_option() pattern — add() inside get_option(), then set() — left the old option behind).
  • Replaced YAC_OCACHE_SKIP_EMPTY with YAC_OCACHE_EMPTY_TTL (default 21600s): empty results (bot-probed get_page_by_path() paths, comment query misses) now share as usual but expire after that lifetime instead of occupying a slot forever. Set 0 to disable the cap.
  • The health panel's "keys used" now reports the number of live entries rather than the slots_used high-water mark.

1.2.1

Choose a tag to compare

@laruence laruence released this 28 Aug 10:33
  • Placed the PHPCS EscapeOutput annotations around the health-ring output so WordPress.org Plugin Check recognizes the exemption (the previous inline annotation sat on the wrong line of the multi-line statement).
  • Annotated pre_wp_cache_get in the drop-in as a WordPress core hook.

1.1.1

Choose a tag to compare

@laruence laruence released this 26 Aug 09:41
  • A stored false is now written to shared memory as 0. Yac's get() returns false for both a miss and a stored false, so false negatives never survived past the request; with 0 they persist like any other value (readers comparing by value see 0 instead of false).
  • Admin page: top entries grew a Hottest tab (by access count) alongside Largest, shown whenever this yac build reports per-entry hits; the entry inspector gains Hits, Embedded-in-slot and compressed-payload (c_len) metadata.
  • Admin page: entry listings now page through Yac::dump() 1000 entries at a time instead of one dump(-1), which could exhaust the PHP memory limit on a busy cache; builds older than 2.4.0 fall back to the single full dump.
  • Dropped the dead global_groups bookkeeping; add_global_groups() is now a no-op.

Note: do not run Yac with the json serializer (yac.serializer=json) — WordPress stores PHP objects in the object cache and JSON cannot round-trip them (objects come back as arrays, causing fatal errors). Keep the default php serializer. See README.

1.1.0

Choose a tag to compare

@laruence laruence released this 22 Aug 11:13
  • Admin page rebuilt around a cache-health verdict: hit-rate ring with Healthy/Attention/Critical, cause-attributed metric bars, keys-by-group pie, largest entries by content length
  • Entry inspector: click any Largest-entries key to view the deserialized value, expiry, last access and padded size, or delete the entry
  • Key format rework: :: (default prefix wp), no per-blog prefix; over-long keys keep the group verbatim and crc32b-hash only the key part
  • WP_YAC_SKIP_EMPTY (on by default): empty get_page_by_path negatives from bot 404 probes stay request-local instead of filling slots
  • WP_YAC_DISABLE escape hatch forces runtime-only mode
  • Health summary widget on the WP admin dashboard

1.0.0

Choose a tag to compare

@laruence laruence released this 20 Aug 15:36

First release