AwesomeCache
AwesomeCache copied to clipboard
Cache timeout much sooner than expected
I set the cache time to 24 hours
internal struct UserTrackingCache {
static let cacheName = "userTrackingCache"
static let locationCacheTime: Double = 24 * 60 * 60 //24 hours
}
///Save to cache
do {
let fullKey = "\(root)_\(key)"
let cache = try Cache<NSData>(name: UserTrackingCache.cacheName)
let cachedData = NSKeyedArchiver.archivedDataWithRootObject("Y")
cache.setObject(cachedData, forKey: fullKey, expires: CacheExpiry.Seconds(UserTrackingCache.locationCacheTime))
} catch _ {
Log.error("Something went wrong with the cache = \(UserTrackingCache.cacheName)")
}
I remove the expired cache when App starts in AppDelegate
do {
let cache = try Cache<NSData>(name: UserTrackingService.UserTrackingCache.cacheName)
cache.removeExpiredObjects()
} catch _ {
Log.debug("Something went wrong with the cache")
}
But I found the cache timeout sooner than I expected. Almost after a few hours, it expires
Does anyone encounter the same issue? or did I do something wrong ?
Does AwesomeCache guarantee the cached items not purged before the expiry time
I am thinking that the cache data might be purged by iOS...
Answer my own question.
It turns out the default .CachesDirectory can be purged by the OS sometimes.
So I changed the cache dir to .DocumentDirectory, and then everything works fine.
I really think this should be written in the document.