iOS 開發 WKWebView快取處理的問題

2021-09-01 12:56:15 字數 2731 閱讀 2149

wkwebview使用中遇到的問題

1.關於快取的問題

因為使用了wkwebview,後端的策劃人員換圖,ios端沒有更新,然後google了好久,最終算是解決了這個問題。

首先,載入第乙個頁面。

_urlstr = @"";

//設定快取的請求策略和超時時間

nsurlrequest * urlreuqest =[[nsurlrequest alloc]initwithurl:[nsurl urlwithstring:_urlstr]cachepolicy:1 timeoutinterval:30.0f];

[_webview loadrequest:urlreuqest];

這時能正常的顯示第乙個頁面,及時更換了也能正常的顯示。

但是在跳轉另乙個url時,不能設定快取方式。。。這樣就造成了,如果你更換了,並且之前你進入了這個頁面,就導致了你看到的是以前的頁面。我這裡找到的處理的方式是在這個wkwebview呼叫dealloc方法時,把html頁面的快取全部刪掉。以下是方法

//在viewcontroller銷毀時移除kvo觀察者,同時清除所有的html快取

- (void)dealloc {

[self.webview removeobserver:self forkeypath:@"estimatedprogress"];

[self.webview removeobserver:self forkeypath:@"title"];

[self clearcache];

/** 清理快取的方法,這個方法會清除快取型別為html型別的檔案*/

- (void)clearcache {

/* 取得library資料夾的位置*/

nsstring *librarydir = nssearchpathfordirectoriesindomains(nslibrarydirectory,nsuserdomainmask, yes)[0];

/* 取得bundle id,用作檔案拼接用*/

nsstring *bundleid = [[[nsbundle mainbundle] infodictionary]objectforkey:@"cfbundleidentifier"];

nsstring *webkitfolderincachesfs = [nsstring stringwithformat:@"%@/caches/%@/fscacheddata",librarydir,bundleid];

nserror *error;

/* 取得目錄下所有的檔案,取得檔案陣列*/

nsfilemanager *filemanager = [nsfilemanager defaultmanager];

// nsarray *filelist = [[nsarray alloc] init];

//filelist便是包含有該資料夾下所有檔案的檔名及資料夾名的陣列

nsarray *filelist = [filemanager contentsofdirectoryatpath:webkitfolderincachesfs error:&error];

/* 遍歷檔案組成的陣列*/

for(nsstring * filename in filelist){

/* 定位每個檔案的位置*/

nsstring * path = [[nsbundle bundlewithpath:webkitfolderincachesfs] pathforresource:filename oftype:@""];

/* 將檔案轉換為nsdata型別的資料*/

nsdata * filedata = [nsdata datawithcontentsoffile:path];

/* 如果filedata的長度大於2,說明filedata不為空*/

if(filedata.length >2){

/* 建立兩個用於顯示檔案型別的變數*/

int char1 =0;

int char2 =0;

[filedata getbytes:&char1 range:nsmakerange(0,1)];

[filedata getbytes:&char2 range:nsmakerange(1,1)];

/* 拼接兩個變數*/

nsstring *numstr = [nsstring stringwithformat:@"%i%i",char1,char2];

/* 如果該檔案前四個字元是6033,說明是html檔案,刪除掉本地的快取*/

if([numstr isequaltostring:@"6033"]){

[[nsfilemanager defaultmanager] removeitematpath:[nsstring stringwithformat:@"%@/%@",webkitfolderincachesfs,filename]error:&error];

continue;

iOS開發 WKWebView快取清理

wkwebview清除快取只能ios9使用,低於ios9執行會崩潰哦!所以,為了適配ios7和ios8,還是要做版本判斷 if uidevice currentdevice systemversion intvalue 9.0 nsarray types wkwebsitedatatypememor...

iOS9 WKWebView清除快取方法

自ios8以來新出的wkwebview,大大優化了uiwebview的記憶體飆公升問題,使得開發者迫不及待的用它來替換掉uiwebview,ios8剛出,作者我就趕緊把專案裡的webview都替換成wkwebview了,然而.當我替換完後發現.我去!wkwebview並沒有清除快取的功能,即使使用了...

Android開發中清理webView快取實現

最近負責了個新專案,跟webview相關。可能很多同學不知道機頂盒是什麼?到這就好,不用再深究了,不然話題就跑偏了。webview cache 快取清除 關於android之webview載入網頁快取和清除問題 結合自己實際中的乙個情況,最終下面是我本地的乙個清除webview快取的 實現,如下 t...