WKWebView 的緩存策略

緩存策略有以下四種方式:

默認(rèn)的NSURLRequest 緩存策略

后臺(tái)需要做響應(yīng)頭設(shè)置套么,否則無(wú)法進(jìn)行緩存。存在cache目錄碳蛋,n磁盤(pán)緊張會(huì)被清除

NSURLCache

和上面類(lèi)似胚泌。可以不需要后臺(tái)設(shè)置也能存儲(chǔ)疮蹦。存在cache目錄诸迟,n磁盤(pán)緊張會(huì)被清除

下載網(wǎng)頁(yè)

將整個(gè)網(wǎng)頁(yè)下載下來(lái),正則匹配圖片url愕乎,下載圖片至本地阵苇。替換圖片URL,創(chuàng)立數(shù)據(jù)庫(kù)管理,管理繁瑣感论,細(xì)致到每一張圖片的增刪改绅项。存儲(chǔ)目錄隨意

服務(wù)器壓縮包

將從服務(wù)器下載壓縮包,圖片資源比肄,css,js等都是相對(duì)路徑快耿。下載成功后切換,做好對(duì)比芳绩,就可以做好 存儲(chǔ)目錄隨意

在說(shuō)存儲(chǔ)之前掀亥,首先要了解兩個(gè)類(lèi)

WKWebView

NSURLCache

通過(guò)這前兩個(gè)類(lèi)來(lái)實(shí)現(xiàn)離線化

1. 設(shè)置NSURLCache

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

? ? //URL緩存設(shè)置

? ? NSURLCache *urlCache = [[NSURLCache alloc]initWithMemoryCapacity:25*1024*1024 diskCapacity:100*1024*1024 diskPath:nil];

? ? [NSURLCache setSharedURLCache:urlCache];

? ? return YES;

}

2. 存儲(chǔ)離線緩存

在WKWebView中,加載成功后妥色,將此次的請(qǐng)求請(qǐng)求緩存起來(lái)

//轉(zhuǎn)換為NSURL類(lèi)型

NSURL *url = [NSURL URLWithString:self.loadURL];

//WK用于正常加載

self.request =? [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:6];

//得到NSData 數(shù)據(jù)

NSData *dataContent = [NSData dataWithContentsOfURL:url];

//NSURLCache 實(shí)例化

NSURLCache *cache = [NSURLCache sharedURLCache];

//得到相應(yīng)

NSURLResponse *response = [[NSURLResponse alloc]initWithURL:url MIMEType:@"text/html" expectedContentLength:0 textEncodingName:@"UTF-8"];

//得到CacheURLResponse

NSCachedURLResponse *cacheResponse = [[NSCachedURLResponse alloc]initWithResponse:response data:dataContent];

//進(jìn)行存儲(chǔ)

[cache storeCachedResponse:cacheResponse forRequest:self.request];

在APP目錄中搪花,會(huì)在Caches目錄下以Bundle Identifier為名創(chuàng)建緩存目錄。緩存的資源圖片嘹害,CSS撮竿、JS、html等都在這個(gè)目錄下笔呀。

正常加載

[self.wkWebView loadRequest:self.request];

離線加載

NSURLCache *cache = [NSURLCache sharedURLCache];

NSCachedURLResponse? *current = [cache cachedResponseForRequest:self.request];

[self.wkWebView loadData:current.data MIMEType:@"text/html" characterEncodingName:@"UTF-8" baseURL:self.request.URL];

沒(méi)錯(cuò)幢踏,這是核心代碼,就這么點(diǎn)许师。說(shuō)真的房蝉,用到的就這么多,但實(shí)際上業(yè)務(wù)不同微渠,產(chǎn)生的邏輯思路也不同惨驶。你會(huì)發(fā)現(xiàn)存儲(chǔ)的目錄在Cache下面,如果手機(jī)的內(nèi)存警告敛助,磁盤(pán)空間不足粗卜,將會(huì)被清理掉。對(duì)不需要長(zhǎng)久持續(xù)保持的業(yè)務(wù)來(lái)說(shuō)纳击,沒(méi)有什么必要续扔,但需要長(zhǎng)久保存的業(yè)務(wù)來(lái)說(shuō)是致命的攻臀。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市纱昧,隨后出現(xiàn)的幾起案子刨啸,更是在濱河造成了極大的恐慌,老刑警劉巖识脆,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件设联,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡灼捂,警方通過(guò)查閱死者的電腦和手機(jī)离例,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)悉稠,“玉大人宫蛆,你說(shuō)我怎么就攤上這事〉拿停” “怎么了耀盗?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)卦尊。 經(jīng)常有香客問(wèn)我叛拷,道長(zhǎng),這世上最難降的妖魔是什么岂却? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任胡诗,我火速辦了婚禮,結(jié)果婚禮上淌友,老公的妹妹穿的比我還像新娘。我一直安慰自己骇陈,他們只是感情好震庭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著你雌,像睡著了一般器联。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上婿崭,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天拨拓,我揣著相機(jī)與錄音,去河邊找鬼氓栈。 笑死渣磷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的授瘦。 我是一名探鬼主播醋界,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼竟宋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了形纺?” 一聲冷哼從身側(cè)響起丘侠,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逐样,沒(méi)想到半個(gè)月后蜗字,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脂新,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年挪捕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片戏羽。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡担神,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出始花,到底是詐尸還是另有隱情妄讯,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布酷宵,位于F島的核電站亥贸,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏浇垦。R本人自食惡果不足惜炕置,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望男韧。 院中可真熱鬧朴摊,春花似錦、人聲如沸此虑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)朦前。三九已至介杆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間韭寸,已是汗流浹背春哨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恩伺,地道東北人赴背。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親癞尚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子耸三,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 緩存策略有以下四種方式: 默認(rèn)的NSURLRequest 緩存策略 后臺(tái)需要做響應(yīng)頭設(shè)置,否則無(wú)法進(jìn)行緩存浇揩。存在c...
    younger_times閱讀 3,384評(píng)論 1 5
  • 概覽 緩存組件應(yīng)該說(shuō)是每個(gè)客戶端程序必備的核心組件仪壮,試想對(duì)于每個(gè)界面的訪問(wèn)都必須重新請(qǐng)求勢(shì)必降低用戶體驗(yàn)。但是如何...
    默默_David閱讀 1,917評(píng)論 1 9
  • #iOS網(wǎng)絡(luò)緩存掃盲篇 #--使用兩行代碼就能完成80%的緩存需求 下篇預(yù)告:[使用80%的代碼來(lái)完成剩下的20%...
    coding_chen閱讀 2,114評(píng)論 0 11
  • iOS開(kāi)發(fā)系列--網(wǎng)絡(luò)開(kāi)發(fā) 概覽 大部分應(yīng)用程序都或多或少會(huì)牽扯到網(wǎng)絡(luò)開(kāi)發(fā)胳徽,例如說(shuō)新浪微博积锅、微信等,這些應(yīng)用本身可...
    lichengjin閱讀 3,644評(píng)論 2 7
  • 我入你深處 如清照泛舟 爭(zhēng)渡 爭(zhēng)渡 偶遇驚奇無(wú)數(shù) 悸動(dòng) 沉 醉 頓悟 流淚 讓我體會(huì)萬(wàn)般滋味 甘愿被虜掠...
    雪莉詩(shī)話閱讀 274評(píng)論 4 5