[Android]WebView搭载WebContent时,网页加载速度太慢的对应策
来源:互联网 发布:简约博客网站源码 编辑:程序博客网 时间:2024/06/10 18:02
WebView搭载服务器端html, js,请求图片大,请求次数多的情况下,网页加载速度很慢。
网页加载速度慢这个问题Native+web content混合模式下如何一定程度上改善呢,这篇小文里探讨一下。
(1)缓存模式。
setCacheMode方法可以设置缓存模式。
缓存模式有5种。意义如下。(转载自网络)
LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据
LOAD_DEFAULT: 根据cache-control决定是否从网络上取数据。
LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式
LOAD_NO_CACHE: 不使用缓存,只从网络获取数据.
LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。
当设置Load_default时,由服务器端的cache-control决定是否使用缓存。服务器端cache-control设为no-cache时,
无论如何都会从网络上取数据。
我们项目服务器端用的cache-control设置的no-cache,所以缓存策略设置为load_default,但是实际上却没有什么卵用。
如果服务器端cache-control设置为cache时,确实网页加载速度变得非常快。
(2)图片或者大的JS文件本地保存
拦截http请求,如果请求图片或者大size的JS文件,比如jquery库, jquery mobile库,直接从本地取得资源并返给web端。
重写WebViewClient的shouldInterceptRequest方法。
<思路>
拦截url,从url得到文件后缀和名字。判断本地是否有此文件。有则通过本地文件得到WebResourceResponse实例返回。
贴代码如下。
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) { WebResourceResponse response = null;
InputStream localCopy = null;
//response by default
response = super.shouldInterceptRequest(view, url);
//if local file, then response local content
String mineType = "image/png"; //for png file
String[] urlSplit = url.split("/");
String fileName = null;
if ((urlSplit != null) && (urlSplit.length != 0)) {
fileName = urlSplit[urlSplit.length-1];
if (fileName.endsWith("js")) {
//for js file
mineType = "application/javascript";
} else if (fileName.endsWith("gif")){
mineType ="image/gif";
} else {
return response;
}
}
if ((fileName != null) && (cacheFile != null)) {
for (String cacheFileName : cacheFile) {
if (fileName.equals(cacheFileName)) {
try {
localCopy = MyApplication.getInstance().getAssets().open(cacheDir + "/"+ cacheFileName);
response = new WebResourceResponse(mineType, "UTF-8", localCopy);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
return response;
}
- [Android]WebView搭载WebContent时,网页加载速度太慢的对应策
- android:webview加载网页速度很慢的的究极解决方案
- android:webview加载网页速度很慢的的究极解决方案
- 避免网页加载速度慢的秘诀
- [Android分享] ANDROID的WEBVIEW控件载入网页显示速度慢的究极解决方案
- Android的WebView控件载入网页显示速度慢的究极解决方案
- Android的WebView控件载入网页显示速度慢的究极解决方案
- ANDROID的WEBVIEW控件载入网页显示速度慢的究极解决方案
- Android的WebView控件载入网页显示速度慢的究极解决方案
- Android的WebView控件载入网页显示速度慢的究极解决方案
- Android的WebView控件载入网页显示速度慢的究极解决方案
- ANDROID的WEBVIEW控件载入网页显示速度慢的究极解决方案
- Android的WebView控件载入网页显示速度慢的究极解决方案
- Android的WebView控件载入网页显示速度慢的究极解决方案
- Android的WebView控件载入网页显示速度慢的究极解决方案
- Android的WebView控件载入网页显示速度慢的究极解决方案
- Android WebView用法和WebView加载提升网页速度
- Android的模拟器,在ADT中调试运行AVD时,速度太慢,极其的慢
- iOS基础控件:UIScrollView 之三大属性 contentOffset 、contentSize 、contentInset 之间的区别
- androidstudio---导入jar文件和添加.SO文件
- IOS 如何给自定义按钮设置选中的效果
- 初识 android v7 包
- 什么时候数组和指针相同
- [Android]WebView搭载WebContent时,网页加载速度太慢的对应策
- Windows开发环境安装配置
- htmlselect下拉式表框标记
- 问题: 将N个元素使用push_back插入到vector中, 求push_back操作的复杂度。
- android 使dialog的宽度充满整个屏幕
- ERROR ITMS-90167: "No .app bundles found in the package"
- 破解intelli ide _2016_2 code
- Android 索引的实现
- Python计算程序运行时间