Comments (4)
The current behavior is intentionally designed to check and remove cache files that exceed the size limit only when the app enters the background.
This approach prevents performance issues that could arise from checking the file size every time a new image is cached, which could significantly impact performance.
If needed, you can manually invoke the removeSizeExceededValues
method on the disk cache at any time to remove files that exceed the specified size limit.
from kingfisher.
Yes, I understand the current behavior was intentional and that it's not practical to check each time. I was thinking more around the idea of call removeSizeExceededValues
when you did receive an error on attempting to write to the disk cache or something.
I was not able to find a central location where I could attempt to catch the error myself; or a closure I could register to be called only when that error got thrown. Perhaps I missed something in the code?
I work on several apps that can be heavy on images in long user sessions, so having the cache grow with limits during a single session can be an issue.
from kingfisher.
Currently, there actually is an error defined in Kingfisher when writing disk cache failed, as the CacheErrorReason.cannotCreateCacheFile
, which is thrown in the ImageCache as in CacheStoreResult.diskCacheResult
. However, since when using the KingfisherManager
and the view extension methods, the cache process happens in an async way (by default, after the image setting completion handler is called) and will not affect the UI layer, this error is ignored (case 1, case 2).
If you need to implement a way to inspect this, maybe you can try to add a delegate to expose this error out and perform a clean up work there.
Or easier, maybe you can just set up a timer (say perform it every 5 or 10 minutes) to clean it regularly before an issue may happen.
from kingfisher.
Or easier, maybe you can just set up a timer (say perform it every 5 or 10 minutes) to clean it regularly before an issue may happen
Yeah, this is what I was thinking as well. But wanted to make sure I was not missing a feature that already existed before going that route as it does feel a bit janky.
from kingfisher.
Related Issues (20)
- 约定的图片地址实际资源为视频时,在列表中加载这种资源,内存激增导致 App 闪退。 HOT 2
- Fade transition still occurs when cache is used with downsampling enabled
- Upload Privacy Policy HOT 2
- KingfisherManager.shared warning on Xcode 15.3 with Strict Concurrency Checking set to complete HOT 4
- Crash at ImageContext.swift line 84. EXC_BAD_ACCESS (SIGSEGV) HOT 1
- Race Condition in ImageDownloader.addDownloadTask HOT 1
- Some Crashs On iPad5.3
- CPListItem' is only available in iOS 12.0 or newer HOT 1
- 同一个cacheKey有不用的downloadURL,主要是加入size控制,如何实现同一cacheKey只缓存size更大的图片数据呢
- [Question] Show a stub ONLY after attempt to load image by URL. HOT 1
- SwiftUI中如何使用progressiveJPEG
- Memory issue
- How do I add suffixes to cache paths, such as.jpg HOT 2
- Undefined symbols for architecture arm64: HOT 1
- ingfisherWebP 在iOS16.7.7 系统中,加载webp 图片不会动,在其他系统中没问题 HOT 1
- dyld[769]: Library not loaded: @rpath/lib/libswiftCoreGraphics.dylib HOT 1
- No trust evaluation handling after receiving the authentication challenge HOT 1
- No exact matches in call to instance method 'retrieveImage' HOT 1
- 【QUESTION】Kingfisher In Memory Graph HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kingfisher.