Removing code to try and be clever about cancelling image requests or not for a instances of the same image being requested

Adding HTTP pipelining to image requests
This commit is contained in:
Mattt Thompson 2011-08-03 11:32:22 -05:00
parent 68dc7e866e
commit 4ac2f407d7
2 changed files with 13 additions and 21 deletions

View file

@ -62,11 +62,9 @@ static inline CGSize kAFImageRequestRoundedCornerRadii(CGSize imageSize) {
image = [UIImage imageByRoundingCornersOfImage:image corners:UIRectCornerAllCorners cornerRadii:kAFImageRequestRoundedCornerRadii(image.size)]; image = [UIImage imageByRoundingCornersOfImage:image corners:UIRectCornerAllCorners cornerRadii:kAFImageRequestRoundedCornerRadii(image.size)];
} }
dispatch_async(dispatch_get_main_queue(), ^(void) {
if (success) { if (success) {
success(image); success(image);
} }
});
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
[[AFImageCache sharedImageCache] cacheImage:image forRequest:request imageSize:imageSize options:options]; [[AFImageCache sharedImageCache] cacheImage:image forRequest:request imageSize:imageSize options:options];

View file

@ -24,8 +24,6 @@
#import "AFImageCache.h" #import "AFImageCache.h"
static NSOperationQueue *_operationQueue = nil;
static NSString * const kUIImageViewImageRequestObjectKey = @"imageRequestOperation"; static NSString * const kUIImageViewImageRequestObjectKey = @"imageRequestOperation";
@interface UIImageView (_AFNetworking) @interface UIImageView (_AFNetworking)
@ -48,11 +46,15 @@ static NSString * const kUIImageViewImageRequestObjectKey = @"imageRequestOperat
objc_setAssociatedObject(self, kUIImageViewImageRequestObjectKey, imageRequestOperation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); objc_setAssociatedObject(self, kUIImageViewImageRequestObjectKey, imageRequestOperation, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
} }
+ (void)initialize { + (NSOperationQueue *)sharedImageRequestOperationQueue {
[super initialize]; static NSOperationQueue *_imageRequestOperationQueue = nil;
_operationQueue = [[NSOperationQueue alloc] init]; if (!_imageRequestOperationQueue) {
[_operationQueue setMaxConcurrentOperationCount:6]; _imageRequestOperationQueue = [[NSOperationQueue alloc] init];
[_imageRequestOperationQueue setMaxConcurrentOperationCount:6];
}
return _imageRequestOperationQueue;
} }
- (void)setImageWithURL:(NSURL *)url { - (void)setImageWithURL:(NSURL *)url {
@ -68,16 +70,9 @@ static NSString * const kUIImageViewImageRequestObjectKey = @"imageRequestOperat
return; return;
} }
if (self.imageRequestOperation && ([self.imageRequestOperation isReady] || [self.imageRequestOperation isExecuting])) {
if ([[[self.imageRequestOperation request] URL] isEqual:url]) {
return;
} else {
[self.imageRequestOperation cancel];
}
}
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageAllowed timeoutInterval:30.0]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageAllowed timeoutInterval:30.0];
[request setHTTPShouldHandleCookies:NO]; [request setHTTPShouldHandleCookies:NO];
[request setHTTPShouldUsePipelining:YES];
UIImage *cachedImage = [[AFImageCache sharedImageCache] cachedImageForRequest:request imageSize:imageSize options:options]; UIImage *cachedImage = [[AFImageCache sharedImageCache] cachedImageForRequest:request imageSize:imageSize options:options];
if (cachedImage) { if (cachedImage) {
@ -93,9 +88,8 @@ static NSString * const kUIImageViewImageRequestObjectKey = @"imageRequestOperat
} }
}]; }];
[_operationQueue addOperation:self.imageRequestOperation]; [[[self class] sharedImageRequestOperationQueue] addOperation:self.imageRequestOperation];
} }
} }
@end @end