我的经验是,在WebView中加载网站要比在Android Web浏览器中执行相同的操作慢得多。我可以看到所有文件都已加载到我的Apache日志中,但是在页面显示在WebView控件中之前需要几秒钟。在本机Web浏览器中打开同一页面将立即显示。似乎渲染在某种程度上已经瘫痪了。
我们必须应用哪些浏览器设置才能获得与在本机Web浏览器中加载页面相同的性能?
我们目前的设置:
browserset.setLoadsImagesAutomatically(true);
browserset.setJavaScriptEnabled(true);
browserset.setDatabaseEnabled(true);
browserset.setDatabasePath("data/data/com.xxx/databases");
browserset.setDomStorageEnabled(true);
browserset.setRenderPriority(WebSettings.RenderPriority.HIGH);
browserset.setSupportZoom(false);
browserset.setUserAgentString( browserset.getUserAgentString() + " (XY ClientApp)" );
browserset.setAllowFileAccess(true);
browserset.setSavePassword(false);
browserset.setSupportMultipleWindows(false);
browserset.setAppCacheEnabled(true);
browserset.setAppCachePath("");
browserset.setAppCacheMaxSize(5*1024*1024);
答案 0 :(得分:17)
我遇到了类似的问题,经过一些繁重的调试后发现原生浏览器和WebView浏览器似乎使用了不同的缓存。
此代码可用于禁用WebView缓存,并使WebView更快(尽管以不缓存为代价)。请注意,它使用私有API,因此通过使用它,您将面临将来版本中代码中断的风险:
try
{
Method m = CacheManager.class.getDeclaredMethod("setCacheDisabled", boolean.class);
m.setAccessible(true);
m.invoke(null, true);
}
catch (Throwable e)
{
Log.i("myapp","Reflection failed", e);
}
答案 1 :(得分:17)
我终于得到了android webview糟糕性能问题的原因。 请注意下面的图片......从OnPageStarted到OnPageFinished使用了12秒。因为它应该加载CSS,javascript和... AJAX ...
我注意到JQuery和JQueryMobile需要在Html.So中加载所有DOM结构。如果我在OnPageFinished之后懒惰加载javascript,它应该更快地显示页面。
首先使用setTimeout而不是$(document).ready(function(){});在JQuery中。然后使用lazyload javascript文件。
最终的html和javascript是:
<script src="/css/j/lazyload-min.js" type="text/javascript"></script>
<script type="text/javascript" charset="utf-8">
loadComplete(){
//instead of $(document).ready(function() {});
}
function loadscript()
{
LazyLoad.loadOnce([
'/css/j/jquery-1.6.2.min.js',
'/css/j/flow/jquery.flow.1.1.min.js',
'/css/j/min.js?v=2011100852'
], loadComplete);
}
setTimeout(loadscript,10);
</script>
您可以在http://wonko.com/post/painless_javascript_lazy_loading_with_lazyload
中找到lazyload-min.js完成后,您可以看到下面的日志图片:
现在,从OnPageStarted到OnPageFinished只需2秒。
我在https://wenzhang.baidu.com/page/view?key=22fe27eabff3251f-1426227431
发布了这篇文章但它是用中文写的:)