用途:该技能聚焦 Rails 应用中的缓存实践,帮助减少响应时间与数据库负载,同时保持内容新鲜。主要覆盖片段缓存、低层缓存、缓存键和条件 GET 四类主题。
主要能力:片段缓存通过在视图中用 cache 包裹可复用的片段实现,缓存键包含模板摘要,片段被编辑时会自动失效;模型版本(cache_key_with_version)可在记录变化时使缓存内容过期。低层缓存使用 Rails.cache.fetch 处理昂贵计算,建议优先用 fetch 避免分离的读写逻辑,选择稳定键,必要时使用数组或哈希,并为应过期的数据设置 expires_in。缓存键方面,对象应实现 cache_key(Active Record 已提供),键可以是数组或哈希,例如 Rails.cache.read(site: "mysite", owners: [owner_1, owner_2]);注意存储后端可能修改键,不应依赖后端特定格式。条件 GET 利用 ETag 和 Last-Modified 返回 304 Not Modified,示例中通过 stale?(last_modified: @product.updated_at.utc, etag: @product.cache_key_with_version) 判断。
使用方式:在视图中包裹可复用片段;在模型中用 Rails.cache.fetch 缓存昂贵计算并设置过期时间;在控制器中结合 stale? 实现条件 GET;按需配置缓存存储。
适用场景:缓存昂贵的视图或查询、在片段缓存与低层缓存之间做选择、配置缓存存储、实现缓存键与条件 GET。
限制:资料未提供具体缓存存储配置细节、性能数据或版本兼容性说明。