溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

iOS UIWebView對(duì)H5緩存功能的示例分析

發(fā)布時(shí)間:2021-06-28 13:42:26 來源:億速云 閱讀:197 作者:小新 欄目:移動(dòng)開發(fā)

這篇文章主要為大家展示了“iOS UIWebView對(duì)H5緩存功能的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“iOS UIWebView對(duì)H5緩存功能的示例分析”這篇文章吧。

+ (instancetype)requestWithURL:(NSURL *)URL;

該方法的描述如下:

Creates and returns a URL request for a specified URL with default cache policy and timeout value.

The default cache policy is NSURLRequestUseProtocolCachePolicy and the default timeout interval is 60 seconds.

大概意思是使用的緩存策略是根據(jù)協(xié)議來的, 即 NSURLRequestUseProtocolCachePolicy. 超時(shí)時(shí)間默認(rèn)是60s.也就是說類似如下的請(qǐng)求:

NSURLRequest *urlReq = [NSURLRequest requestWithURL:url
                      cachePolicy:NSURLRequestUseProtocolCachePolicy
                      timeoutInterval:60.f];

如果協(xié)議支持緩存的話, UIWebview 請(qǐng)求到的數(shù)據(jù)就是緩存數(shù)據(jù).該緩存是需要 WEB 服務(wù)器支持的.看一下常用的方法

// 使用緩存數(shù)據(jù), 如果有緩存的話
// 使用這個(gè)方法, 改變 HTML 或者 JS 代碼
// 頁面不會(huì)拉取最新數(shù)據(jù), 還是使用之前請(qǐng)求到的數(shù)據(jù).
// 除非重新刷新
NSURLRequest *urlReq = [NSURLRequest requestWithURL:url
                      cachePolicy:NSURLRequestReturnCacheDataDontLoad
                    timeoutInterval:10.f];
 
// 使用協(xié)議緩存, 需要 web 服務(wù)器支持.
NSURLRequest *urlReq = [NSURLRequest requestWithURL:url
                      cachePolicy:NSURLRequestUseProtocolCachePolicy
                    timeoutInterval:60.f];
 
// 不使用緩存, 加載數(shù)據(jù)
NSURLRequest *urlReq = [NSURLRequest requestWithURL:url
                      cachePolicy:NSURLRequestReloadIgnoringCacheData
                    timeoutInterval:20.0];

下面是清除緩存的方法

[[NSURLCache sharedURLCache] removeAllCachedResponses];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
[[NSURLCache sharedURLCache] setMemoryCapacity:0];

上面清除緩存的時(shí)候我們也看到了UIWebview緩存主要是利用NSURLCache來實(shí)現(xiàn)內(nèi)存緩存或者本地緩存。內(nèi)存緩存的最大值是4M(410241024),本地緩存是20M。

NSURLCache *cache = [[NSURLCache alloc] initWithMemoryCapacity:4*1024 * 1024 diskCapacity:0 diskPath:nil];
[NSURLCache setSharedURLCache:cache];

其中[NSURLCache setSharedURLCache:cache]是針對(duì)當(dāng)前進(jìn)程中的所有clients做的共享緩存。由于iOS中當(dāng)前進(jìn)程中只有一個(gè)app, 所以只要是當(dāng)前app中UIWebview加載的H5頁面,都是共享這個(gè)緩存空間的。

在加入上述功能之后,利用charles抓包,發(fā)現(xiàn)第一次加載H5頁面時(shí)候,很多的css文件,在二次打開該頁面的時(shí)候,charles沒有抓到,這個(gè)也證明了,在將css等資源文件緩存之后,再次打開H5頁面之后,UIWebview直接從NSURLCache中獲取緩存的css等資源,不會(huì)再次發(fā)起請(qǐng)求。另外也可以在加載H5后,打印cache.currentMemoryUsage來查看對(duì)應(yīng)的內(nèi)存消耗情況,如果數(shù)字大于0,就說明緩存中已經(jīng)存儲(chǔ)H5內(nèi)容了。

以上是在內(nèi)存中緩存H5頁面,這個(gè)策略有個(gè)問題,如果用戶將進(jìn)程殺掉,再次打開H5的時(shí)候,需要重新緩存。還有另外一種緩存策略,在本地緩存H5內(nèi)容,主要是利用在NSURLCache子類中重寫下面方法。

- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request

以上是“iOS UIWebView對(duì)H5緩存功能的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI