Found
Include fastly/cache/core.h to use this class.
Represents a found cached item. This allows access to metadata and the cached body.
A Found instance is returned from Transaction::found() when the transaction has found a cached item during the lookup operation.
Methods
age
View sourcestd::chrono::nanoseconds fastly::cache::core::Found::age() constThe current age of the cached item.
Returns
hits
View sourceDetermines the number of cache hits to this cached item.
Note: this hit count only reflects the view of the server that supplied the cached item. Due to clustering, this count may vary between potentially many servers within the data center where the item is cached. See the clustering documentation for details, though note that the exact caching architecture of Compute is different from VCL services.
Returns
is_stale
View sourcebool fastly::cache::core::Found::is_stale() constDetermines whether the cached item is stale.
A cached item is stale if its age is greater than its max-age period.
Returns
is_usable
View sourcebool fastly::cache::core::Found::is_usable() constDetermines whether the cached item is usable.
A cached item is usable if its age is less than the sum of the max-age and stale-while-revalidate periods.
Returns
known_length
View sourceThe size in bytes of the cached item, if known.
The length of the cached item may be unknown if the item is currently being streamed into the cache without a fixed length.
Returns
max_age
View sourcestd::chrono::nanoseconds fastly::cache::core::Found::max_age() constHow long the cached item is/was considered fresh, starting from the start of the cached item's lifetime.
Note that this is the maximum possible age, not the freshness time remaining; see remaining_ttl() for that.
Returns
remaining_ttl
View sourcestd::chrono::nanoseconds fastly::cache::core::Found::remaining_ttl() constReturns the remaining TTL: how long this cached item has left before it is considered stale. Zero if the cached item is stale.
Note: this reports the remaining freshness period; max_age() reports the maximum possible TTL.
Returns
stale_while_revalidate
View sourcestd::chrono::nanoseconds fastly::cache::core::Found::stale_while_revalidate() constThe time for which a cached item can safely be used despite being considered stale.
Returns
to_stream
View sourceRetrieves the entire cached item as a Body that can be read in a streaming fashion.
Only one stream can be active at a time for a given Found. The stream must be fully consumed (read) before a new stream can be created from the same Found. CacheError::InvalidOperation will be returned if a stream is already active for this Found. This restriction may be lifted in future releases.
Returns
to_stream_from_range
View sourcetl::expected<Body, CacheError> fastly::cache::core::Found::to_stream_from_range(std::optional<uint64_t> from, std::optional<uint64_t> to) constRetrieves a range of bytes from the cached item as a Body that can be read in a streaming fashion.
from and to will determine which bytes are returned:
- If
fromis provided andtois not provided, the stream will begin at thefrombyte and continue to the end of the body. - If
fromandtoare both provided, only the rangefrom..=towill be provided. Note, both ends are inclusive. - If
tois provided butfromis not provided, the lasttobytes of the body will be provided.
Inherently invalid ranges
If to is strictly before from, this call returns an error immediately. (to == from is acceptable - the bounds are inclusive, so this addresses a single byte.)
Known size
The size of a cached item is known if it has completed streaming or if the expected length was provided at insert time (TransactionInsertBuilder::known_length and similar).
If the size of the cached item is known, the range is respected only if the range is valid (to is after from, and both ranges are less than or equal to the size of the item). Otherwise, no error is returned, and the entire body is returned instead.
Unknown size
The size of a cached item may not be known (if known_length was not provided and the body is still being streamed). If the size of the cached item is unknown, by default, the range is ignored, and the entire cached item is returned.
This behavior can be overriden by calling TransactionLookupBuilder::always_use_requested_range. If provided, this call will block until the start of the interval is found, then begin streaming content. The Body will generate a read error if the end of the range exceeds the available data.
Parameters
Returns
user_metadata
View sourceThe user-controlled metadata associated with the cached item.
Returns