Android和iOS关于WebView(UIWebView)缓存的看法

Android和iOS关于WebView(UIWebView)缓存的看法_第1张图片

1.首先判断是否有网络,若没有网络使用NSURLRequestReturnCacheDataDontLoad
也就是说,已经存在的缓存数据用于请求返回,不管他的过期日期和已经存在了多久,若没有请求对应的缓存数据,不要去数据源读取,该请求被设置为失败,这种情况多数用于离线模式。
2.在有网络的情况下,判断是4G还是WIFI。
3.如果是4G,使用NSURLRequestReloadRevalidatingCacheData
,对已经存在的缓存数据先去数据源验证有效性,如果无效,将从数据源获取,若缓存有效,则加载Cache
4.如果是WIFI,使用NSURLRequestReloadlgnoringLocalAndRemoteCacheData
这里是说,在有WIFI的状态下,不仅忽略本地的缓存数据,还忽略中间网络媒介(如代理服务器)的缓存,直接从最原始的服务器拿取数据。

Android
Android和iOS关于WebView(UIWebView)缓存的看法_第2张图片

1.同理也是先判断是否有网络,如果没有网络,使用LOAD_CACHE_ELSE_NETWORK,即优先加载本地缓存,本地无缓存时,尝试从网络获取数据,获取失败,则提示网络错误信息。
2.若有网,使用LOAD_DEFAULT
根据cache-control 决定是否从网络上获取数据。如果设置为noCache() 则无论如何都从网络上获取数据,不care缓存数据的问题。

你可能感兴趣的:(开发日记)