AwesomeCache icon indicating copy to clipboard operation
AwesomeCache copied to clipboard

Cache timeout much sooner than expected

Open pai911 opened this issue 6 years ago • 2 comments

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 ?

pai911 avatar Apr 16 '18 01:04 pai911

Does AwesomeCache guarantee the cached items not purged before the expiry time

I am thinking that the cache data might be purged by iOS...

pai911 avatar Apr 16 '18 10:04 pai911

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.

pai911 avatar Apr 18 '18 09:04 pai911