Android WebView shouldInterceptRequest -
https://www.jianshu.com/p/7a237e7f055c
Android WebView的性能问题及缓存机制、资源加载方案 -
https://bbs.huaweicloud.com/blogs/219777
Android WebView H5 秒开方案总结 -
https://juejin.cn/post/7016883220025180191
使用 Android 的 webview 去加载一个 cocos 的 h5 游戏, 如果全部资源都有网络上请求的的话, 即使使用了缓存, 第一次加载还是避免不了加载全部资源的情况, 还是会很慢.
-
-
https://stackoverflow.com/questions/65138909/how-to-enable-brotli-compression-on-android-system-webview
可以打开这个网站测试:
https://www.cylog.org/headers/
, 查看
Accept-Encoding
, 查看支持的压缩方式
实际测试, gzip 压缩都支持, br 压缩要求高版本的 chrome 内核才能支持, 所以技术上应该选择支持性更好的方式, 也就是
gzip 压缩方式
.
如果 chrome 内核版本, 如
Chrome/122.0.0.0
, >= 120.0.0.0 版本的话, 就是支持 br 的
升级 Android System WebView
直接在 Google Play 上即可, 链接:
https://play.google.com/store/apps/details?id=com.google.android.webview
-
https://game.aaa.com
, 重定向后是
https://www.aaa.com
, 应该加载
https://www.aaa.com/lib/bbb.js
, 但 webview 却去加载
https://game.aaa.com/lib/bbb.js
资源, 发现找不到
-
原因是重写 shouldInterceptRequest 方法, 当时的原因是想通过访问 index.html 文件是, 每次去拉服务器上最新的资源, 而不是使用 webview 本地的缓存资源, 已达到 cocos h5 更新的效果
1 2 3 4 5 6 7 8 9 10 11 12
|
private static class WebviewClientHelper extends WebViewClient { @Override public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { String url = request.getUrl().toString(); if (url.indexOf("index.html") > 0) { if (rsp != null) { return new WebResourceResponse("text/html", "UTF-8", new ByteArrayInputStream(rsp)); } } return super.shouldInterceptRequest(view, request); } }
|
-
解决办法: 不重写这个方法, 让 webview 自己处理. cocos 更新问题的话, 通过服务器重定向返回新名字的 html 页面即可, 不能也旧的同名