在 v5 中将预取图像复制到内存中 (SDWebImageCacheMemoryOnly)
Replicate Prefetching images into memory (SDWebImageCacheMemoryOnly) in v5
在使用 SDWebImage v4 时,可以通过
将选项设置为仅在内存中缓存图像
SDWebImagePrefetcher.sharedImagePrefetcher.options = SDWebImageCacheMemoryOnly;
这似乎不再是 v5 的选项,因此出现了这个问题。默认情况下,缓存的图像似乎来自光盘。 (有些图像出现在屏幕上有延迟,我之前通过在内存中预取它们来解决)。
我在迁移指南中看到 v5 现在将磁盘和内存缓存分开,但我无法弄清楚如何告诉预取器仅将图像存储在内存中。
一位图书馆维护者的回答,原文可在https://github.com/SDWebImage/SDWebImage/issues/2698
找到
有一个名为storeCacheType的上下文选项,值类型是SDImageCacheType。请参阅有关它的文档。
/**
A SDImageCacheType raw value which specify the cache type when the image has just been downloaded and will be stored to the cache. Specify `SDImageCacheTypeNone` to disable cache storage; `SDImageCacheTypeDisk` to store in disk cache only; `SDImageCacheTypeMemory` to store in memory only. And `SDImageCacheTypeAll` to store in both memory cache and disk cache.
If not provide or the value is invalid, we will use `SDImageCacheTypeAll`. (NSNumber)
*/
FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextStoreCacheType;
所以。您只需要控制预取器,使用 SDImageCacheTypeMemory 枚举来控制存储缓存类型。
SDWebImagePrefetcher.sharedImagePrefetcher.context = @{SDWebImageContextStoreCacheType : @(SDImageCacheTypeMemory)};
在使用 SDWebImage v4 时,可以通过
将选项设置为仅在内存中缓存图像SDWebImagePrefetcher.sharedImagePrefetcher.options = SDWebImageCacheMemoryOnly;
这似乎不再是 v5 的选项,因此出现了这个问题。默认情况下,缓存的图像似乎来自光盘。 (有些图像出现在屏幕上有延迟,我之前通过在内存中预取它们来解决)。
我在迁移指南中看到 v5 现在将磁盘和内存缓存分开,但我无法弄清楚如何告诉预取器仅将图像存储在内存中。
一位图书馆维护者的回答,原文可在https://github.com/SDWebImage/SDWebImage/issues/2698
找到有一个名为storeCacheType的上下文选项,值类型是SDImageCacheType。请参阅有关它的文档。
/**
A SDImageCacheType raw value which specify the cache type when the image has just been downloaded and will be stored to the cache. Specify `SDImageCacheTypeNone` to disable cache storage; `SDImageCacheTypeDisk` to store in disk cache only; `SDImageCacheTypeMemory` to store in memory only. And `SDImageCacheTypeAll` to store in both memory cache and disk cache.
If not provide or the value is invalid, we will use `SDImageCacheTypeAll`. (NSNumber)
*/
FOUNDATION_EXPORT SDWebImageContextOption _Nonnull const SDWebImageContextStoreCacheType;
所以。您只需要控制预取器,使用 SDImageCacheTypeMemory 枚举来控制存储缓存类型。
SDWebImagePrefetcher.sharedImagePrefetcher.context = @{SDWebImageContextStoreCacheType : @(SDImageCacheTypeMemory)};