您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“iOS UIWebView對H5緩存功能的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“iOS UIWebView對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.
大概意思是使用的緩存策略是根據協議來的, 即 NSURLRequestUseProtocolCachePolicy. 超時時間默認是60s.也就是說類似如下的請求:
NSURLRequest *urlReq = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.f];
如果協議支持緩存的話, UIWebview 請求到的數據就是緩存數據.該緩存是需要 WEB 服務器支持的.看一下常用的方法
// 使用緩存數據, 如果有緩存的話 // 使用這個方法, 改變 HTML 或者 JS 代碼 // 頁面不會拉取最新數據, 還是使用之前請求到的數據. // 除非重新刷新 NSURLRequest *urlReq = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataDontLoad timeoutInterval:10.f]; // 使用協議緩存, 需要 web 服務器支持. NSURLRequest *urlReq = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.f]; // 不使用緩存, 加載數據 NSURLRequest *urlReq = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:20.0];
下面是清除緩存的方法
[[NSURLCache sharedURLCache] removeAllCachedResponses]; [[NSURLCache sharedURLCache] setDiskCapacity:0]; [[NSURLCache sharedURLCache] setMemoryCapacity:0];
上面清除緩存的時候我們也看到了UIWebview緩存主要是利用NSURLCache來實現內存緩存或者本地緩存。內存緩存的最大值是4M(410241024),本地緩存是20M。
NSURLCache *cache = [[NSURLCache alloc] initWithMemoryCapacity:4*1024 * 1024 diskCapacity:0 diskPath:nil]; [NSURLCache setSharedURLCache:cache];
其中[NSURLCache setSharedURLCache:cache]是針對當前進程中的所有clients做的共享緩存。由于iOS中當前進程中只有一個app, 所以只要是當前app中UIWebview加載的H5頁面,都是共享這個緩存空間的。
在加入上述功能之后,利用charles抓包,發現第一次加載H5頁面時候,很多的css文件,在二次打開該頁面的時候,charles沒有抓到,這個也證明了,在將css等資源文件緩存之后,再次打開H5頁面之后,UIWebview直接從NSURLCache中獲取緩存的css等資源,不會再次發起請求。另外也可以在加載H5后,打印cache.currentMemoryUsage來查看對應的內存消耗情況,如果數字大于0,就說明緩存中已經存儲H5內容了。
以上是在內存中緩存H5頁面,這個策略有個問題,如果用戶將進程殺掉,再次打開H5的時候,需要重新緩存。還有另外一種緩存策略,在本地緩存H5內容,主要是利用在NSURLCache子類中重寫下面方法。
- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request
以上是“iOS UIWebView對H5緩存功能的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。