Fix Image Cache issues

This commit is contained in:
Leland Richardson
2017-02-06 16:57:16 -08:00
parent 70bb4624f1
commit e9883fd68c
2 changed files with 20 additions and 4 deletions
+3 -4
View File
@@ -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)
+17
View File
@@ -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