{
"key": "cache.item_age",
"brief": "The age of the cache entry in seconds, measured at read time.",
"type": "integer",
"apply_scrubbing": {
"key": "manual"
},
"is_in_otel": false,
"visibility": "public",
"examples": [
5,
3600
],
"search_alias": {
"name": "cache.item_age",
"type": "second"
},
"additional_context": [
"Set on reads that return an entry. Absent on a miss, or when the cache does not report a write time.",
"Clamped to 0. On a shared cache, the writer's clock and the reader's clock can drift far enough to make the age negative.",
"Can exceed `cache.ttl`. A cache that discards an expired entry on read still reports the age of that entry, with `cache.hit: false`."
],
"changelog": [
{
"version": "0.23.0",
"prs": [
637
],
"description": "Added cache.item_age attribute"
}
]
}
{
"key": "cache.tags",
"brief": "The tags attached to the cache entry. Tags group entries so a cache can invalidate them together.",
"type": "string[]",
"apply_scrubbing": {
"key": "auto",
"reason": "Applications pick tag values freely and often build them from record identifiers such as a user id."
},
"is_in_otel": false,
"visibility": "public",
"examples": [
[
"blog-posts",
"post-42"
],
[
"products"
]
],
"additional_context": [
"Cache library examples that support tags: Next.js `cacheTag()`, Symfony `ItemInterface::tag()`, Laravel `Cache::tags()`.",
"HTTP caches take tags from a response header. Cloudflare reads `Cache-Tag`, Fastly reads `Surrogate-Key`.",
"Record only the tags the application declared. Leave out implicit tags that the framework adds itself, for example one tag per route.",
"The tags describe the entry, not the operation. Take them from the entry the cache returned or stored."
],
"changelog": [
{
"version": "0.23.0",
"prs": [
637
],
"description": "Added cache.tags attribute"
}
]
}