mycache to natywne rozszerzenie PHP napisane w C++, które zastępuje sieciowy object cache
(Redis/Memcached) lokalnym cache w RAM o bardzo niskich opóźnieniach. Integruje się z WordPressem jako
drop-in object-cache.php i jest projektowane pod obciążenia WooCommerce.
WordPress i WooCommerce odczytują i zapisują obiekty przez standardowe API
wp_cache_get(), wp_cache_set().
mycache zachowuje pełną kompatybilność dzięki drop-in.
Drop-in trzyma cache w trakcie żądania (pamięć) i — jeśli rozszerzenie jest dostępne —
persystuje dane przez funkcje natywne (mycache_get, mycache_set, itd.).
Obiekty persystentne są zapisywane jako małe pliki w katalogu w RAM
(zwykle /dev/shm), bez TCP, bez jitteru sieci i bez zewnętrznych usług.
mycache persystuje każdy wpis cache jako kompaktowy plik binarny w katalogu, który żyje w RAM
(na Linuxie zazwyczaj /dev/shm). Dzięki temu odczyty i zapisy są lokalne i szybkie.
/dev/shm/mycache (konfigurowalne)chmod_mode, SGID na katalogach)Klucze są haszowane (FNV-1a 64-bit) i mapowane na stałą liczbę podkatalogów (fanout). To eliminuje problem spadków wydajności przy ogromnych pojedynczych katalogach.
256 (konfigurowalne)base/subdir/mc-<hash>.binZapis jest wykonywany atomowo przez plik tymczasowy i rename. Odczyty używają locków współdzielonych, aktualizacje — locków wyłącznych. To utrzymuje spójność cache przy wysokim concurrency.
mkstemp → write → fdatasync → rename → fsync(dir)flock(LOCK_SH)flock(LOCK_EX) (np. incr/decr)
mycache dostarcza kompatybilny object-cache.php. Przekierowuje standardowe wywołania
WordPress Object Cache do rozszerzenia, zachowując jednocześnie in-request cache dla maksymalnej szybkości.
wp-content/object-cache.php
mycache możesz konfigurować globalnie w php.ini albo per-request przez ini_set().
Drop-in używa tego do bezpiecznego powiązania hosta z własnym katalogiem cache (izolacja multi-tenant).
| Ustawienie | Domyślnie | Znaczenie |
|---|---|---|
mycache.dir |
/dev/shm/mycache |
Katalog bazowy dla plików cache w RAM |
mycache.fanout |
256 |
Liczba podkatalogów (potęga 2, max 4096) |
mycache.chmod_mode |
504 (octal 0770) |
Uprawnienia katalogów/plików (katalogi dostają SGID dla dziedziczenia grupy) |
mycache.max_bytes |
0 |
Limit rozmiaru (0 = brak limitu); best-effort eviction po przekroczeniu |
/dev/shm jest ograniczone, użyj prywatnego katalogu cache w obrębie konta.
mycache_set(key, value, ttl) — zapis z opcjonalnym TTLmycache_get(key) — odczyt (null przy miss)mycache_exists(key) — szybkie sprawdzenie istnieniamycache_delete(key) — usunięcie kluczamycache_flush() — pełny flush (drop-in może preferować namespace bump)mycache_gc(ttlGrace) — usuwanie expired/uszkodzonych wpisówmycache_incr/decr(key) — atomowe operacje na liczbach (lock na pliku)mycache_stats() — statystyki w JSONWooCommerce generuje bardzo dużo powtarzalnych odczytów obiektów (opcje, dane produktów, lookup, sesje). mycache zmniejsza obciążenie bazy i usuwa opóźnienia sieciowe z warstwy cache.
Odczyty cache to lokalne operacje na plikach w RAM. Brak narzutu socketów i ogona opóźnień sieciowych.
Mniej powtarzanych zapytań SQL o opcje, transienty, lookup i obiekty wyliczane. Najbardziej widać to na katalogu, produktach i checkout.
Zapisy atomowe + locki plikowe utrzymują spójność między workerami PHP-FPM nawet przy dużym ruchu.
Sprawdź cennik, wybierz plan i zainstaluj drop-in. Z aktywną licencją masz aktualizacje i wsparcie techniczne.
Zobacz cennik Instrukcja instalacji