Caching
flagd
has a caching strategy implementable by providers that support server-to-client streaming.
Cacheable flags
flagd
sets the reason
of a flag evaluation as STATIC
when no targeting rules are configured for the flag.
A client can safely store the result of a static evaluation in its cache indefinitely (until the configuration of the flag changes, see cache invalidation).
Put simply in pseudocode:
if reason == "STATIC" {
isFlagCacheable = true
}
Cache invalidation
flagd
emits events to the server-to-client stream, among these is the configuration_change
event.
The structure of this event is as such:
{
"type": "delete", // ENUM:["delete","write","update"]
"source": "/flag-configuration.json", // the source of the flag configuration
"flagKey": "foo"
}
A client should invalidate the cache of any flag found in a configuration_change
event to prevent stale data.
If the connection drops all cache values must be cleared (any number of events may have been missed).