fix: address Phase 1 code review findings

- Serve cache via template_redirect so feeds/404/REST are excluded and
  query conditionals work
- Bypass cache on query strings; key files by md5(host+path) to avoid
  collisions and support multisite
- Write wp-content/wp-recache-cache.php drop-in server and set WP_CACHE
  in wp-config.php so advanced-cache.php actually runs
- Only remove advanced-cache.php on deactivation when it is ours
- Respect DONOTCACHEPAGE, non-200 responses; bots read but never warm
  cache
- Fix comment purge (comment_post_ID) and heartbeat purge ($data arg)
- Fix exclude URLs textarea parsing; purge all when exclusions change
- Enqueue admin purge script on every admin-bar page, not just settings
- Sync tests, add TESTING.md manual test guide
This commit is contained in:
2026-09-13 13:44:30 +02:00
parent 33099591f5
commit d2be239c3f
12 changed files with 309 additions and 78 deletions
+10
View File
@@ -10,6 +10,11 @@ class WP_Recache_WPCache_Test extends WP_UnitTestCase {
public function test_cache_creates_file_on_first_request() {
$cache = new WP_Recache_WPCache();
$_SERVER['HTTP_HOST'] = 'example.com';
$_SERVER['REQUEST_URI'] = '/test-page/';
$_SERVER['HTTPS'] = 'off';
unset($_SERVER['HTTP_USER_AGENT']);
$url = 'https://example.com/test-page/';
$path = wp_recache_get_cache_path($url);
@@ -59,6 +64,11 @@ class WP_Recache_WPCache_Test extends WP_UnitTestCase {
public function test_cache_file_is_created_with_correct_permissions() {
$cache = new WP_Recache_WPCache();
$_SERVER['HTTP_HOST'] = 'example.com';
$_SERVER['REQUEST_URI'] = '/test-page/';
$_SERVER['HTTPS'] = 'off';
unset($_SERVER['HTTP_USER_AGENT']);
$url = 'https://example.com/test-page/';
$path = wp_recache_get_cache_path($url);