Changelog History
-
v0.6.0 Changes
March 22, 2020 -
v0.5.0 Changes
November 12, 2019Noteworthy Changes
- Waiting tasks are given the refreshed value (492158c)
- Avoid waiting on refresh and back populating cache in
GetOrSetAsync
(bb9031f) - More accurate connection available checking for Redis (1c28388)
MemoryCacheLayer
now usesConcurrentDictionary
again (3beacac)- 0๏ธโฃ
CacheSettings
constructor logic has changed - when noStaleAfter
is given, the default value is zero rather than being the same value asTimeToLive
. (6dd6b15)
๐ Performance Improvements
CacheStack
, when multiple threads are waiting on a refreshed result, performs about 5% faster- ๐
CacheStack
, in the caching alternative memory benchmarks, performs significantly better with memory allocations as well as a 6% performance improvement.
Notes
๐ There are some minor memory allocation increases, primarily around going back to usingConcurrentDictionary
forMemoryCacheLayer
. However, these changes are somewhat offset from the overall performance increase under heavy load that wasn't possible with the custom locking solution.With the
CacheStack
improvements in the caching alternative memory benchmarks, the allocation bonuses primarily come from not usingTask.Run
(bb9031f). Even though those were not called in the benchmark, their presence must have introduced more work in either the state machine or the final IL that made it perform slower. -
v0.4.0 Changes
November 03, 2019Major Changes
CacheStack
to require generic type forICacheContext
(#16)
๐ While this might seem to make certain ways of using
CacheStack
more difficult in terms of DI now always needing to specify the context type, it makes using the context inside the value getter far easier as it no longer needs to be cast.With this in mind, this completely breaks any previous usage.
๐ There didn't seem to be any measurable difference in performance from this change.
-
v0.3.0 Changes
October 28, 2019Major Changes
- Switched to
ValueTask
forCacheStack
and extensions (15726f1) - Partial custom JSON serialization for
JsonFileCacheLayer
(5374264) - โฌ๏ธ Dropped Request ID field from
CacheStack
and extensions (ccc67d1) - โฌ๏ธ Dropped
CachedAt
andTimeToLive
onCacheEntry
for a singleExpiry
field (#13) - โ Added Dependency Injection helper (#8)
๐ Performance Changes
CacheStack
allocates ~29% lessMemoryCacheLayer
allocates ~2% lessRedisCacheLayer
is ~2% faster while allocating ~2% lessJsonFileCacheLayer
allocates ~2% lessMongoDbCacheLayer
allocates ~9% less
- Switched to
-
v0.2.0 Changes
October 24, 2019๐ There are a lot of releases in a short amount of time because I'm writing a lot of code at once - this will settle down soon
Major Changes
- ๐ Changed
ICacheLayer
to be split toIAsyncCacheLayer
andISyncCacheLayer
, both usable throughCacheStack
FileCacheLayerBase
no longer does async serialization. It will, however, still asynchronously read the file to memory from disk.
๐ Performance Changes
- CacheStack is 15% - 40% faster while allocating 25% - 50% less
- MemoryCacheLayer is ~7% faster while allocating ~13% less
- ๐ฑ JsonFileCacheLayer is ~3% faster while allocating ~99% less ๐
- ProtobufFileCacheLayer is ~3% faster
- ๐ Changed
-
v0.1.2 Changes
October 20, 2019 -
v0.1.1 Changes
October 17, 2019๐ First generally usable and somewhat stable pre-release.
๐ Features:
- In-Memory Caching Provider
- JSON and Protobuf File System Caching Providers
- Redis Caching Provider
- MongoDB Caching Provider
- Redis Locking Extension
- Redis Remote Eviction Extension
-
v0.0.1 Changes
October 09, 2019๐ Initial build