Caching strategies, invalidation, eviction policies, HTTP caching, distributed caching, and anti-patterns. Use when designing cache layers, choosing eviction policies, debugging stale data, or optimizing read-heavy workloads.
数据来源:ClawHub。 在 ClawSkills 查看
选择你使用的 Agent
方法一:命令行安装(推荐)
推荐(无需提前安装 clawhub)
npx clawhub@latest --dir ~/.claude/skills install caching或使用 clawhub CLI(需提前安装)
clawhub --dir ~/.claude/skills install caching⚠️ 需要 Node.js 18+,没有 Node?请使用下方方法二直接下载 ZIP。 安装 Node.js →
方法二:手动下载安装(无需 Node)
下载 ZIP,解压后将文件夹放到以下路径,重启 Agent 即可:
安装路径
~/.claude/skills/caching/💡解压后将文件夹放到上方路径,重启 Agent 即可生效
--- name: caching model: standard description: Caching strategies, invalidation, eviction policies, HTTP caching, distributed caching, and anti-patterns. Use when designing cache layers, choosing eviction policies, debugging stale data, or optimizing read-heavy workloads. ---
> A well-placed cache is the cheapest way to buy speed. A misplaced cache is the most expensive way to buy bugs.
| Strategy | How It Works | When to Use | |----------|-------------|-------------| | Cache-Aside (Lazy) | App checks cache → miss → reads DB → writes to cache | Default choice — general purpose | | Read-Through | Cache fetches from DB on miss automatically | ORM-integrated caching, CDN origin fetch | | Write-Through | Writes go to cache AND DB synchronously | Read-heavy with strong consistency | | Write-Behind | Writes go to cache, async flush to DB | High write throughput, eventual consistency OK | | Refresh-Ahead | Cache proactively refreshes before expiry | Predictable access patterns, low-latency critical |
Cache-Aside Flow:
App ──► Cache ──► HIT? ──► Return data
│
▼ MISS
Read DB ──► Store in Cache ──► Return data
---
| Method | Consistency | When to Use | |--------|-------------|-------------| | TTL-based | Eventual (up to TTL) | Simple data, acceptable staleness | | Event-based | Strong (near real-time) | Inventory, profile updates | | Version-based | Strong | Static assets, API responses, config | | Tag-based | Strong | CMS content, category-based purging |
| Data Type | TTL | Rationale | |-----------|-----|-----------| | Static assets (CSS/JS/images) | 1 year + cache-busting hash | Immutable by filename | | API config / feature flags | 30–60 seconds | Fast propagation needed | | User profile data | 5–15 minutes | Tolerable staleness | | Product catalog | 1–5 minutes | Balance freshness vs load | | Session data | Match session timeout | Security requirement |
---
| Directive | Meaning | |-----------|---------| | max-age=N | Cache for N seconds | | s-maxage=N | CDN/shared cache max age (overrides max-age) | | no-cache | Must revalidate before using cached copy | | no-store | Never cache anywhere | | must-revalidate | Once stale, must revalidate | | private | Only browser can cache, not CDN | | public | Any cache can store | | immutable | Content will never change (within max-age) | | stale-while-revalidate=N | Serve stale for N seconds while fetching fresh |
# Immutable static assets (hashed filenames)
Cache-Control: public, max-age=31536000, immutable
# API response, CDN-cached, background refresh
Cache-Control: public, s-maxage=60, stale-while-revalidate=300
# Personalized data, browser-only
Cache-Control: private, max-age=0, must-revalidate
ETag: "abc123"
# Never cache (auth tokens, sensitive data)
Cache-Control: no-store
| Mechanism | Request Header | Response Header | How It Works | |-----------|---------------|-----------------|-------------| | ETag | If-None-Match: "abc" | ETag: "abc" | Hash-based — 304 if match | | Last-Modified | If-Modified-Since: | Last-Modified: | Date-based — 304 if unchanged |
Prefer ETag over Last-Modified — ETags detect content changes regardless of timestamp granularity.
---
| Solution | Speed | Shared Across Processes | When to Use | |----------|-------|------------------------|-------------| | In-memory LRU | Fastest | No | Single-process, bounded memory, hot data | | Redis | Sub-ms (network) | Yes | Production default — TTL, pub/sub, persistence | | Memcached | Sub-ms (network) | Yes | Simple key-value at extreme scale | | SQLite | Fast (disk) | No | Embedded apps, edge caching |
| Feature | Redis | Memcached | |---------|-------|-----------| | Data structures | Strings, hashes, lists, sets, sorted sets | Strings only | | Persistence | AOF, RDB snapshots | None | | Pub/Sub | Yes | No | | Max value size | 512 MB | 1 MB | | Verdict | Default choice | Pure cache at extreme scale |
---
| Concern | Solution | |---------|----------| | Partitioning | Consistent hashing — minimal reshuffling on node changes | | Replication | Primary-replica — writes to primary, reads from replicas | | Failover | Redis Sentinel or Cluster auto-failover |
Rule of thumb: 3 primaries + 3 replicas minimum for production Redis Cluster.
---
| Policy | How It Works | When to Use | |--------|-------------|-------------| | LRU | Evicts least recently accessed | Default — general purpose | | LFU | Evicts least frequently accessed | Skewed popularity distributions | | FIFO | Evicts oldest entry | Simple, time-ordered data | | TTL | Evicts after fixed duration | Data with known freshness window |
> Redis default is noeviction. Set maxmemory-policy to allkeys-lru or volatile-lru for production.
---
Browser Cache → CDN → Load Balancer → App Cache → DB Cache → Database
| Layer | What to Cache | Invalidation | |-------|--------------|--------------| | Browser | Static assets, API responses | Versioned URLs, Cache-Control | | CDN | Static files, public API responses | Purge API, surrogate keys | | Application | Computed results, DB queries, external API | Event-driven, TTL | | Database | Query plans, buffer pool, materialized views | ANALYZE, manual refresh |
---
When a hot key expires, hundreds of requests simultaneously hit the database.
| Technique | How It Works | |-----------|-------------| | Mutex / Lock | First request locks, fetches, populates; others wait | | Probabilistic early expiration | Random chance of refreshing before TTL | | Request coalescing | Deduplicate in-flight requests for same key | | Stale-while-revalidate | Serve stale, refresh asynchronously |
---
| Strategy | When to Use | |----------|-------------| | On-deploy warm-up | Predictable key set, latency-sensitive | | Background job | Reports, dashboards, catalog data | | Shadow traffic | Cache migration, new infrastructure | | Priority-based | Limited warm-up time budget |
> Cold start impact: A full cache flush can increase DB load 10–100x. Always warm gradually or use stale-while-revalidate.
---
| Metric | Healthy Range | Action if Unhealthy | |--------|--------------|---------------------| | Hit rate | > 90% | Low → cache too small, wrong TTL, bad key design | | Eviction rate | Near 0 steady state | High → increase memory or tune policy | | Latency (p99) | < 1ms (Redis) | High → network issue, large values, hot key | | Memory usage | < 80% of max | Approaching max → scale up or tune eviction |
---
immutable Cache-Control — browsers will never re-fetch安装 caching 后,可以对 AI 说这些话来触发它
Help me get started with caching
Explains what caching does, walks through the setup, and runs a quick demo based on your current project
Use caching to caching strategies, invalidation, eviction policies, HTTP caching, ...
Invokes caching with the right parameters and returns the result directly in the conversation
What can I do with caching in my marketing & growth workflow?
Lists the top use cases for caching, with example commands for each scenario
将技能文件夹放到 ~/.claude/skills/caching/ 目录(个人级,所有项目可用),或 .claude/skills/caching/(项目级)。重启 AI 客户端后,用 /caching 主动调用,或让 AI 根据上下文自动发现并使用。
caching 支持 Claude、Cursor、OpenClaw,可与这些 AI 平台无缝集成,扩展其能力。
caching 可免费安装使用。请查阅仓库了解许可证信息。
Caching strategies, invalidation, eviction policies, HTTP caching, distributed caching, and anti-patterns. Use when designing cache layers, choosing eviction policies, debugging stale data, or optimizing read-heavy workloads.
caching 属于「Marketing & Growth」分类,该分类的技能帮助 AI 智能体在此领域执行专业任务。
Automate my marketing & growth tasks using caching
Identifies repetitive steps in your workflow and sets up caching to handle them automatically