Implementing an additional caching layer for StoredValue #62
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
StoredValue
saves values to UserDefaults which has it's own layer of caching, but that caching is reserved for primitives such asBool
orString
. Since aStoredValue
is persisted as data every time they are accessed they have to be decoded using aJSONDecoder
, which means every access of a value requires JSON decoding.That is not very performant, so this pull request introduces an additional in-memory store of a
StoredValue
, similar to howStore
has an in-memory layer to access and use values for the sake of performance. This same logic could be applied toSecurelyStoredValue
but is intentionally eschewed to prevent keeping sensitive values in memory, defeating the purpose ofSecurelyStoredValue
using the system keychain as a backing store.