![](/img/trans.png)
[英]How to save the content in UIWebView for faster loading on next launch?
[英]How to cache content in UIWebView for faster loading later on?
我注意到iphone safari會緩存內容,以便以后加載頁面的速度比桌面瀏覽器快得多。 所以以移動gmail網頁為例,第一次加載很慢(5-10秒)。 但如果我關閉標簽並再次重新打開頁面,則會非常快(1秒)。
但是,如果通過應用程序中的UIWebView加載內容,則此行為不一樣。 我錯過了一些設置嗎? 如何讓UIWebView自動緩存內容而無需自己保存內容的麻煩?
關鍵是: NSURLRequestReturnCacheDataElseLoad
NSData *urlData;
NSString *baseURLString = @"mysite.com";
NSString *urlString = [baseURLString stringByAppendingPathComponent:@"myfile"];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval: 10.0];
NSURLConnection *connection=[[NSURLConnection alloc] initWithRequest:request delegate:nil];
if (connection)
{
urlData = [NSURLConnection sendSynchronousRequest: request];
NSString *htmlString = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
[webView loadHTMLString:htmlString baseURL:baseURLString];
[htmlString release];
}
[connection release];
NSString *stringurl=[NSString stringWithFormat:@"http://www.google.com"];
NSURL *url=[NSURL URLWithString:stringurl];
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:15.0];
[uiwebview loadRequest:theRequest];
它將首次加載URL然后僅查找內容更改..如果url內容中沒有更新,它將從緩存(本地存儲)加載。
基於此討論線程 ,似乎UIWebView
不存在任何操作系統級別的緩存。 根據經驗,我注意到我的iPhone OS設備上的Safari沒有緩存其網頁(例如,在Safari中點擊后退按鈕不會從緩存中重新加載舊頁面)。
我已經完成了幾個將頁面緩存到Documents文件夾的應用程序,然后在加載新網頁之前比較緩存和網頁的時間戳。 所以基本流程是:
if (fileIsInCache)
if (cacheFileDate > webFileDate)
getCachedFile
else
getFileFromWeb
saveFileToCache
else
getFileFromWeb
saveFileToCache
stuffFileIntoUIView
maybeReduceCache
您仍然需要訪問Web以獲取標題,但這通常比下載整個頁面/圖像/文件快得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.