æ¦è¦
[é¢é£æ å ±] Cocoaã®æ¥ã : ãµã¼ãä¸ã®ãã¡ã¤ã«ãè¦ãã«ã¯?
UIWebView ã¯æå®ããããªã¯ã¨ã¹ãã«å¾ãã³ã³ãã³ãããã¦ã³ãã¼ããã。ãã®æã«ãã£ãã·ã¥ãã¡ã¢ãªã«ä¿åãã。
ãã£ãã·ã¥ã®å¶å¾¡ã«ã¯ UIWebViewã«æ¸¡ã NSURLRequest ã§è¡ã。
(ä¾) NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60.0];ãã£ãã·ã¥ããªã·ã¼ã¯æ¬¡ã®ç¨®é¡ããã。NSURLRequst.h ãã転è¼。
enum
{
NSURLRequestUseProtocolCachePolicy = 0,
NSURLRequestReloadIgnoringLocalCacheData = 1,
NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4, // Unimplemented
NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData,
NSURLRequestReturnCacheDataElseLoad = 2,
NSURLRequestReturnCacheDataDontLoad = 3,
NSURLRequestReloadRevalidatingCacheData = 5, // Unimplemented
};
typedef NSUInteger NSURLRequestCachePolicy;ããã©ã«ãã§ã¯ NSURLRequestUseProtocolCachePolicy ã«ãªã£ã¦ãã。ãã£ãã·ã¥ã®ä»çµã¿
ãã£ãã·ã¥ã¯ URL Loading System ã®ä¸é¨ã¨ãã¦åã。
URL Loading System Programming Guide: URL Loading System Overview
ãã£ãã·ã¥åä½ã«ã¤ãã¦ã¯ä»¥å Mac OS X ã§èª¿æ»ãããã¨ããã。
(æ§) Cocoaã®æ¥ã : ãã£ãã·ã¥èª¿æ»(ããã«ç¶ã)
iOSã§ãåçã®ä»çµã¿ã使ã£ã¦ããã®ã§åºæ¬çã«ã¯åãåä½ã¨ãªã。以ä¸、è¦ç¹ãæç²:
・ãã£ãã·ã¥ã¯ãã£ã¹ã¯ã¨ã¡ã¢ãªã使ã。 ・ãã£ãã·ã¥ã¯ã¢ããªã±ã¼ã·ã§ã³ãã¨ã«æ ¼ç´ããã。 ・ãã£ãã·ã¥ã¯ NSURLConnection ããã㯠NSURLDownload ã«ãã£ã¦ä½¿ããã ・ãã£ãã·ã¥ããªã·ã¼ã¯ NSURLRequest åæåæã«æ±ºãããã ・NSURLCache ã¯ã©ã¹ã使ã£ã¦ãã£ãã·ã¥ãµã¤ãºã、ãã£ã¹ã¯ä¸ã®ä¿åä½ç½®ãè¨å®ã§ãã ・NSCachedURLResponse ã使ãã¨ãã£ãã·ã¥ãããã³ã³ãã³ãã¸ã¢ã¯ã»ã¹ãããã¨ãã§ãã ・NSCachedURLResponse 㯠NSURLResponse ã¨ã³ã³ãã³ããã¼ã¿ãã«ãã»ã«åãã¦ãã ・ç¾è¡ã¯ http/https ã®ãªã¯ã¨ã¹ãããã£ãã·ã¥ããã (httpsãªã¯ã¨ã¹ãã¯ãã£ã¹ã¯ã«ãã£ãã·ã¥ããããã¨ã¯ãªã) ・NSURLConnection ã® connection:willCacheResponse: ããªã²ã¼ãã¡ã½ããã使ã£ã¦ ãã£ãã·ã¥ã®æåãå¶å¾¡ãããã¨ãã§ããiOS ã®å ´åã¯ä¸è¨ã®ç¹ãç°ãªã。
・ãã£ã¹ã¯ãã£ãã·ã¥ã¯ä½¿ããªã ・-[NSURLCache cachedResponseForRequest:] ããªã¼ãã¼ã©ã¤ãã㦠ãã£ãã·ã¥ã®æåãå¶å¾¡ãããã¨ãã§ãã。ãã£ã¹ã¯ãã£ãã·ã¥ã使ããªããã¨ã¯ãªãã¡ã¬ã³ã¹ã§ã¯ç¢ºèªã§ããªãã£ãã、ããã¤ãã®ããã°ã§ææããã¦ãã。
A-Liaison BLOG: iPhoneãiPhoneã·ãã¥ã¬ã¼ã¿ä¸ã§NSURLCacheã¯ã©ã¹ã使ã
iPhone宿©ã§ã¯、ã¡ã¢ãªä¸ã¸ã®ãã£ãã·ã¥ã¯åãããã¡ã¤ã«ä¸ã¸ã®ãã£ãã·ã¥ã¯è¡ãããªã。ãããã£ã¦ã¢ããªãçµäºããã¨ãã£ãã·ã¥ã¯ãã¹ã¦æ¶ãã。objective c - iphone: NSURLCache on disk - Stack Overflow
AFAIK NSURLRequest/NSURLConnection on iOS doesn't support caching to disk.iPhoneã·ãã¥ã¬ã¼ã¿ã§ã¯ãã£ã¹ã¯ãã£ãã·ã¥ãæ®ãããã。
å¿ç¨(1) ã«ã¹ã¿ã ãã£ãã·ã¥
UIWebView ã¯æé»çã« NSURLCache ã使ç¨ãã¦ãã。
NSURLCache Class Reference
é常ã¯ã·ã¹ãã ãã¤ã³ã¹ã¿ã³ã¹ãæä¾ãã¦ã㦠+sharedURLCache ã§å©ç¨ãããã¨ãã§ãã。ãã®ã¤ã³ã¹ã¿ã³ã¹ã¯ +setSharedURLCache: ã§ç½®æãããã¨ãã§ããã®ã§、ãã£ãã·ã¥åä½ãã«ã¹ã¿ãã¤ãºãããå ´åã¯èªåã§ NSURLCache ã®ãµãã¯ã©ã¹ãç¨æã、ãã®ã¤ã³ã¹ã¿ã³ã¹ãè¨å®ãããã¨ã§ URL Loading System(ãããªãã¡ãããå©ç¨ãã UIWebView)ã®ãã£ãã·ã¥ã®æ¯ãèããã«ã¹ã¿ãã¤ãºãããã¨ãã§ãã。
@interface CustomCache : NSURLCache
{
:
}
@endè¨å®ã¯ã¢ããªã±ã¼ã·ã§ã³èµ·åç´å¾ãªã©ã§è¡ã。- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
:
CustomCache *cache =
[[CustomCache alloc] initWithMemoryCapacity: memoryCapacity
diskCapacity: discCapacity diskPath:path];
[NSURLCache setSharedURLCache:cache];
[cache release];
}UIWebView ã¯ã³ã³ãã³ããåå¾ããå ´å、次ã®åä½ãè¡ã。
1. loadRequest: ãå¼ã°ãã 2. UIWebViewå ã§ -[NSURLCache cachedResponseForRequest:] ãå¼ã³åºã。 a. æ»ãå¤ã® NSCachedURLResponse(ãã£ãã·ã¥ãããã³ã³ãã³ã)ãåå¾ã§ããã°ãããå©ç¨ãã。 b. æ»ãå¤ã nil(ãã£ãã·ã¥ç¡ã)ãªããããã¯ã¼ã¯çµç±ã§ææ°ã®ã³ã³ãã³ããåå¾ãã。ãã®çº、NSURLCahce ã®ãµãã¯ã©ã¹ã§ã¯ -[NSURLCache cachedResponseForRequest:] ããªã¼ãã¼ã©ã¤ããã¦、ããã«ãã£ãã·ã¥ãã¸ãã¯ãè¨è¿°ãã。iOS ã§ã¯ãã£ã¹ã¯ãã£ãã·ã¥ã使ããªãã、å¿ è¦ãªãèªåã§ãã£ã¹ã¯ãã£ãã·ã¥ãããã«å®è£ ãããã¨ãã§ãã。ã¾ãUIWebView ã使ã£ããªãã©ã¤ã³åä½ãããããªã¢ããªãããã使ãã¨çµãããã 。
ã«ã¹ã¿ã ãã£ãã·ã¥ã¯ã©ã¹ã®ä½ææ¹æ³ã¯ä¸è¨ã®ãã¼ã¸ãå½¹ã«ç«ã¤。
IPHONE - How to save the content in UIWebView for faster loading on next launch? - efreedom
å¿ç¨ä¾ã¾ã¨ã
- ã«ã¹ã¿ã ãã£ãã·ã¥ãã¸ãã¯ã®å®è£ (ãã£ã¹ã¯ãã£ãã·ã¥ãªã©)
- UIWebView ã®ãªãã©ã¤ã³åä½(ãã£ã·ã¥ã³ã³ãã³ãã®å¼·å¶å©ç¨、HTMLä¸ã®ãªã½ã¼ã¹ãªã³ã¯ã®æ¸ãæããªã©)
å¿ç¨(2) ã³ã³ãã³ããã£ã«ã¿
NSURLCache ã®ãµãã¯ã©ã¹åãå¿ç¨ããã¨ã³ã³ãã³ããã£ã«ã¿ãå®è£ ãããã¨ãã§ãã。ã³ã³ãã³ããã£ã«ã¿ãè¡ãæ¹æ³ã¯ä¸è¨ãåèã«ãªã。
URL filtering for UIWebView on the iPhone – iCab Blog
(cachedResponseForRequest: ã®å®è£
ã転è¼)
- (NSCachedURLResponse*)cachedResponseForRequest:(NSURLRequest*)request
{
NSURL *url = [request URL];
BOOL blockURL = [[FilterMgr sharedFilterMgr] shouldBlockURL:url];
if (blockURL) {
NSURLResponse *response =
[[NSURLResponse alloc] initWithURL:url
MIMEType:@"text/plain"
expectedContentLength:1
textEncodingName:nil];
NSCachedURLResponse *cachedResponse =
[[NSCachedURLResponse alloc] initWithResponse:response
data:[NSData dataWithBytes:" " length:1]];
[super storeCachedResponse:cachedResponse forRequest:request];
[cachedResponse release];
[response release];
}
return [super cachedResponseForRequest:request];
}FilterMgr ã«ãã¦ãããã¯ãã¹ãURLã¨å¤æããå ´åã¯ç©ºç½ã®ãã¼ã¸ãè¿ãæ§ã«ãªã£ã¦ãã。ã¤ã¾ãURLã®å®ä½ã¨ã¯ç¡é¢ä¿ã«、ããã°ã©ã ã§åæã«è¡¨ç¤ºãããã³ã³ãã³ãããã£ãã·ã¥ã¨å½è£
ã㦠UIWebViewã¸æ¸¡ããã¨ã§ãã£ã«ã¿ãªã³ã°ãå®ç¾ãã¦ãã。ãã®ã¢ã¤ãã£ã¢ã¯é¢ç½ã。ãã®æ¹æ³ã使ãã°ã³ã³ãã³ãä¸ã®ã¿ã°ã®æ¸ãæãã容æã«ã§ãã(å®éã«ãã®ç¨éã§ããå©ç¨ããã¦ããããã)。
å¿ç¨ä¾ã¾ã¨ã
- ã³ã³ãã³ãã®å·®ãæ¿ã
- ã³ã³ãã³ãã®æ¸ãæã(ãªã³ã¯ã®æ¸ãæã、ã¡ãã»ã¼ã¸ã®æ¸ãæã)
åèæ å ±
iPhone, Android, webOS ã¢ãã¤ã«ãã©ã¦ã¶ãã£ãã·ã¥ã®å¶é - WebOS Goodies
ã¢ãã¤ã« Safari ä»ã®ãã£ãã·ã¥ã«ã¤ãã¦ã®èª¿æ»。
(æ§) Cocoaã®æ¥ã : WebKitæ¤è¨¼(32) - ãã£ãã·ã¥ã®ä¸èº«
Cache.db ã®èª¿æ»。
(æ§) Cocoaã®æ¥ã : WebKitæ¤è¨¼(36) - ãã£ãã·ã¥ãã¯ãªã¢ãã(æå)
NSURLCacheã«ã¤ãã¦ã®ã¡ã¢ - iRSSã®æ¥è¨
ãã£ãã·ã¥ã¯Last-ModifiedãExpiresãããããªãã¨æ©è½ããªãã®ã§ãã。
Cocoa with Love: Substituting local data for remote UIWebView requests




Responses
Leave a Response