Skill: Caching
Nội dung này hiện chưa có sẵn bằng ngôn ngữ của bạn.
Read the bundled conventions before applying this skill.
Decisions that affect behavior
Section titled “Decisions that affect behavior”- Identify the layer being changed: data values, query results/schema metadata, rendered fragments/pages, or HTTP validators. They have different keys and invalidation contracts. A backend change does not automatically refresh every layer, and a warm cache is not evidence of fresh data.
- Preserve the configured backend and component ID unless replacement is required.
Yii 22.0 uses
ApcuCachewithoutuseApcu;ApcCache, XCache, ZendDataCache, and the oldmget/mset/maddaliases are removed. UsemultiGet/multiSet/multiAddandDependency::isChanged(). Extensions such as Redis must be resolved separately from core; availability depends on runtime and deployment. - Include every input that changes the cached value in its key or variations, including relevant tenant/user, authorization scope, locale, and query parameters. Do not cache personalized output under a public shared key. Keep current key prefix conventions and account for processes sharing the backend.
get()uses false for a miss/expiry/changed dependency;getOrSet()therefore recomputes a legitimate false result. Use an explicit value envelope when false is a meaningful cached result.exists()does not check dependency freshness.- Dependencies are evaluated when set and checked on retrieval; disabling the serializer disables dependency handling. Select TTL, tags, or a dependency that represents the actual source change. Verify invalidation on relevant writes; do not assume a transaction or record event clears an unrelated cached result.
- Page/fragment caching must preserve the requested dynamic content and vary by relevant request context. HTTP caching must preserve cache-control/privacy and conditional-request semantics. Treat schema-cache refresh separately after DDL.
getOrSet()is not a lock or guarantee of single computation under concurrency. Do not use it to enforce uniqueness or serialize side effects. Do not flush a shared cache as an ordinary acceptance check; invalidation should be scoped.
Observable acceptance
Section titled “Observable acceptance”With isolated keys or a disposable backend, demonstrate miss, hit without repeated computation, expiry or chosen dependency invalidation, and a fresh result after the source changes. Check isolation between contexts represented in the key. Exercise a meaningful false value if applicable. For HTTP caching verify a full response and the corresponding conditional response, including relevant headers; for page or fragment caching verify dynamic portions and authorized variants remain correct. Report whether the production backend/SAPI was exercised or only an in-memory double.
Evidence routes
Section titled “Evidence routes”Read framework/caching/{Cache,Dependency,TagDependency,ApcuCache}.php,
framework/widgets/FragmentCache.php, framework/filters/{PageCache,HttpCache}.php,
and query/schema cache integration in framework/db/Connection.php and Schema.php.
Tests: tests/framework/caching/CacheTestCase.php, TagDependencyTest.php and
FileCacheTest.php in that directory, tests/framework/widgets/FragmentCacheTest.php,
tests/framework/filters/PageCacheTest.php, and HttpCacheTest.php.
Guides: caching-data, caching-fragment, caching-page, caching-http.
Install and activate this skill
Section titled “Install and activate this skill”Select yii2-caching in the installation and client verification guide.
Install the complete bundle, including referenced resources. The canonical SKILL.md is also available for direct reading.
Continue with the related framework guide.