Comments (2)
@meiyongsheng 感谢汇报这个问题。
暂时这个方法被安排在了主线程上调用,做 dispatch 应该可以缓解,但是可能会涉及到一些后向兼容的问题 (比如 .loadDiskFileSynchronously
) 和部分 API breaking。我考虑一下看看有没有更好的方法。
另外,想要请教一下,大概是在多长时间内 (比如一个 main runloop?) 检查多少图片缓存会导致这个问题?如果数量太夸张且没有必要的话,是不是也可以考虑在 set image 或者 cache check 的地方稍微batch一下。
可能是我自己的使用场景比较局限,我们自己的项目从来没有在这里遇到性能问题。
from kingfisher.
目前主要是我们整个应用的文件IO相对操作较多, 并且涉及到的图片处理也比较非常多,当整个应用的文件IO消耗较高时,如果增涉及到有较多通过KF去处理图片的行为,此时就容易触发到性能问题,这里是否在同一个 main runloop 暂时无法界定,目前观察到的case就是IO操作较多是容易发生性能问题,目前我们项目中针对通过KF单例直接调用图片处理的地方是在异步子线程中执行,但是有部分涉及到 通过view.kf.setImage执行的函数无法切换到异步。
按照苹果方案文档fileManager.fileExists确实是一次IO行为。 我尝试修改过KF的源码,但是由于KF中是每个接口都返回DownloadTask,并且内部通过判断cacheType来进行同步执行导致目前难以修改
喵神看看这里有什么好的处理方案, 一劳永逸的避免这个case导致的性能问题
from kingfisher.
Related Issues (20)
- 部分jpg图片链接无法显示的问题,kf.setImage(with: URL(string: url), placeholder: placeholder) HOT 5
- ImageProgressive.swift:121 Crash HOT 2
- Memory Leak HOT 3
- Privacy Report HOT 4
- 约定的图片地址实际资源为视频时,在列表中加载这种资源,内存激增导致 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
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.