Ես նախաստորագրեցի NSURLCache-ն իմ հավելվածի պատվիրակում այսպես.
int cacheSizeMemory = 4*1024*1024; // 4MB
int cacheSizeDisk = 32*1024*1024; // 32MB
MyServerCache *sharedCache = [[MyServerCache alloc] initWithMemoryCapacity:cacheSizeMemory diskCapacity:cacheSizeDisk diskPath:@"nsurlcache"];
[MyServerCache setSharedURLCache:sharedCache];
Այնուհետև ես ստեղծում եմ հարցում լռելյայն քեշի քաղաքականությամբ և զանգում.
[NSURLConnection sendSynchronousRequest: urlRequest
returningResponse: &response
error: pError ];
Պատասխանը «application/json» տիպի է և ունի «Cache-Control» դրված է «private, max-age=600»: Պատասխանն ընդամենը 874 բայթ է (չպետք է չափազանց մեծ լինի քեշի համար), սակայն NSURLCache-ը կարծես թե չի աշխատում:
Ես սա գործարկել եմ սիմուլյատորի վրա և փնտրել եմ սկավառակի քեշը, որը կարծես թե գոյություն չունի, ուստի ես ենթադասավորեցի NSURLCache (MyServerCache) և խախտեցի հետևյալ մեթոդները՝ տեսնելու, թե արդյոք դրանք կանչվում են.
-(NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request
{
NSLog(@"Returning cached response for request: %@", request);
return [super cachedResponseForRequest:request];
}
-(void)storeCachedResponse:(NSCachedURLResponse *)cachedResponse forRequest:(NSURLRequest *)request
{
NSLog(@"Caching response for request: %@", request);
[super storeCachedResponse:cachedResponse forRequest:request];
}
Անկախ նրանից, թե ինչ եմ ես անում (և ես փորձել եմ մի քանի տարբեր API-ներ և պատասխաններ), NSURLCache-ը երբեք ոչինչ չի պահում: Ես երբեք չեմ կարող գտնել սկավառակի քեշը ֆայլային համակարգում, և վերը նշված մեթոդները երբեք չեն կանչվում NSURLCache-ի իմ ենթադասում (MyServerCache):
Ես իսկապես կցանկանայի օգտագործել սա, այլ ոչ թե գլորել իմ սեփական քեշը, բայց ես գաղափար չունեմ, թե ինչու այն չի աշխատում կամ ինչպես այն գործի դնել: Խնդրում ենք օգնել.