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).