mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Fix Image Cache issues
This commit is contained in:
@@ -20,13 +20,12 @@
|
||||
|
||||
#import "RCTImageUtils.h"
|
||||
|
||||
static const NSUInteger RCTMaxCachableDecodedImageSizeInBytes = 1048576; // 1MB
|
||||
static const NSUInteger RCTMaxCachableDecodedImageSizeInBytes = 1048576 * 4; // 4MB
|
||||
|
||||
static NSString *RCTCacheKeyForImage(NSString *imageTag, CGSize size, CGFloat scale,
|
||||
RCTResizeMode resizeMode, NSString *responseDate)
|
||||
{
|
||||
return [NSString stringWithFormat:@"%@|%g|%g|%g|%zd|%@",
|
||||
imageTag, size.width, size.height, scale, resizeMode, responseDate];
|
||||
return [NSString stringWithFormat:@"%@", imageTag];
|
||||
}
|
||||
|
||||
@implementation RCTImageCache
|
||||
@@ -38,7 +37,7 @@ static NSString *RCTCacheKeyForImage(NSString *imageTag, CGSize size, CGFloat sc
|
||||
- (instancetype)init
|
||||
{
|
||||
_decodedImageCache = [NSCache new];
|
||||
_decodedImageCache.totalCostLimit = 5 * 1024 * 1024; // 5MB
|
||||
_decodedImageCache.totalCostLimit = 32 * 1024 * 1024; // 32MB
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(clearCache)
|
||||
|
||||
@@ -386,6 +386,9 @@ static UIImage *RCTResizeImageIfNeeded(UIImage *image,
|
||||
} else {
|
||||
// Use networking module to load image
|
||||
cancelLoad = [strongSelf _loadURLRequest:request
|
||||
size:size
|
||||
scale:scale
|
||||
resizeMode:resizeMode
|
||||
progressBlock:progressHandler
|
||||
completionBlock:completionHandler];
|
||||
}
|
||||
@@ -402,6 +405,9 @@ static UIImage *RCTResizeImageIfNeeded(UIImage *image,
|
||||
}
|
||||
|
||||
- (RCTImageLoaderCancellationBlock)_loadURLRequest:(NSURLRequest *)request
|
||||
size:(CGSize)size
|
||||
scale:(CGFloat)scale
|
||||
resizeMode:(RCTResizeMode)resizeMode
|
||||
progressBlock:(RCTImageLoaderProgressBlock)progressHandler
|
||||
completionBlock:(void (^)(NSError *error, id imageOrData, NSString *fetchDate))completionHandler
|
||||
{
|
||||
@@ -413,6 +419,17 @@ static UIImage *RCTResizeImageIfNeeded(UIImage *image,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
UIImage *image = [[self imageCache] imageForUrl:request.URL.absoluteString
|
||||
size:size
|
||||
scale:scale
|
||||
resizeMode:resizeMode
|
||||
responseDate:@""];
|
||||
if (image) {
|
||||
completionHandler(nil, image, @"");
|
||||
return ^{ };
|
||||
}
|
||||
|
||||
|
||||
RCTNetworking *networking = [_bridge networking];
|
||||
|
||||
// Check if networking module can load image
|
||||
|
||||
Reference in New Issue
Block a user