性能优化系列之如何选择合适的WebView内核?

news2025/1/16 3:30:16

文章の目录

  • 一、iOS UIWebView
    • 1、优点
    • 2、不足
  • 二、iOS WKWebView
    • 1、优势
    • 2、不足
  • 三、Android WebKit 和 Chromium
  • 四、Android 第三方
    • 1、X5 内核
  • 五、选型建议
  • 写在最后


一、iOS UIWebView

1、优点

  1. 从 iOS 2 开始就作为 App 内展示 Web 内容的容器
  2. 排版布局能力强

2、不足

  1. 内存泄露
  2. 极高内存峰值
  3. Touch Delay(300ms延迟)
  4. JavaScript 的运行性能和通信限制
  5. 2018年 iOS 12 以后已经被标记为 Deprecated 不再维护

二、iOS WKWebView

1、优势

  1. 苹果在 WWDC 2014 上推出的新一代 WebView 组件
  2. WKWebView 的内存开销比 UIWebView 小很多
  3. 在性能、稳定性、占用内存方面有很大提升
  4. 高达 60fps 的滚动刷新率
  5. 自身就支持了右滑返回手势
  6. 支持了更多的 HTML 的属性:
  7. 内存占用是 UIWebView 的1/4~1/3
  8. 加载速度比 UIWebView 提升了一倍左右
  9. 更为细致地拆分了 UIWebViewDelegate 中的方法
  10. 允许 JavaScript 的 Nitro 库加载并使用( UIWebView 中限制)大大提高了页面 JS 执行速度。
  11. 可以和 JS 直接互调函数,不像 UIWebView 需要第三方库WebViewJavaScriptBridge来协助处理和 JS 的交互。

2、不足

  1. 不支持页面缓存,需要自己注入 Cookie,而 UIWebView 是自动注入 Cookie。
  2. 无法发送 POST参数问题

三、Android WebKit 和 Chromium

在这里插入图片描述

四、Android 第三方

1、X5 内核

  1. 速度快:相比系统 WebView 的网页打开速度有 30+%的提升
  2. 省流量:使用云端优化技术使流量节省 20+%
  3. 更安全:安全问题可以在 24 小时内修复
  4. 更稳定:经过亿级用户的使用考验,CRASHE 率低于 0.15%
  5. 兼容好:无系统内核的碎片化问题,更少的兼容性问题
  6. 体验优:支持夜间模式、适屏排版、字体设置等浏览增强功能
  7. 功能全:在 H5、ES6 上有更完整支持
  8. 更强大:集成强大的视频播放器,支持视频格式远多于系统 WebView
  9. 视频和文件格式的支持 X5 内核多于系统内核
  10. 防劫持是 X5 内核的一大亮点

五、选型建议

  • iOS:WKWebView
  • Android:X5

写在最后

如果你感觉文章不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L~~~///(^v^)\\\~~~
谢谢各位读者们啦(^_^)∠※!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/145291.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

将两个对象以指定方法按指定轴对齐的DataFrame.align()方法

【小白从小学Python、C、Java】【计算机等级考试500强双证书】【Python-数据分析】将两个对象以指定方法按指定轴对齐DataFrame.align()选择题关于以下python代码说法错误的一项是?import pandas as pddf1 pd.DataFrame({"A": [1,2],"B":[3,4]})df2 pd.…

MySQL延时关联使查询速度提升N倍

以下内容也可以观看视频教程: https://space.bilibili.com/431152063先来看下面的sql语句: select * from orderinfo limit 1000000, 100目前orderinfo表中的数据大概是1亿行 查询耗时大概2秒多,如果将sql中的返回所有字段改成只返回dbid字段…

Linux驱动开发基础__APP怎么读取按键值

目录 1 妈妈怎么知道孩子醒了 2 APP读取按键的4种方法 2.1 查询方式 2.2 休眠-环形方式 2.3 poll方式 2.4 异步通知方式 在做单片机开发时,要读取 GPIO 按键,我们通常是执行一个循环,不断地 检测 GPIO 引脚电平有没有发生变化。但是在 Li…

进入保护模式

文章目录前言前置知识代码说明实验操作前言 本博客记录《操作系统真象还原》第四章实验操作~ 实验环境:ubuntu18.04VMware , Bochs下载安装 实验内容:实现从MBR到LOADER,由LOADER实现进入保护模式 实验原理:计算机…

Cadence PCB仿真分配电压网络电压时网络未自动识别问题解决方案

⏪《上一篇》   🏡《总目录》   ⏩《下一篇》 目录 1,问题概述2,分配方法3,避免方法4,总结1,问题概述 如下图所示在使用Allegro PCB SI为电源网络分配电压时,有些网络实际上是电源网络,但是未被自动识别,无法对齐分配电压,具体解决方法如下。 2,分配方法 第1…

最近新开源的基于单目稠密重建NeRF-SLAM

点云PCL免费知识星球,点云论文速读。文章:NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields作者:Antoni Rosinol John J. Leonard Luca Carlone编辑:点云PCL代码:https://github.com/ToniRV/N…

JavaScript 异步函数解析

前言 在学习 JavaScript 的过程中,理解并灵活运用异步相关知识是一件不容易的事情,这体现在代码可读性、健壮性上,好在 ES6 出现后挽回了这一局面,我们不再需要编写可读性不高的回调嵌套,也不用为了代码的健壮性而处处…

spring boot使用TaskScheduler实现动态增删启停定时任务

TaskScheduler 概述 TaskScheduler是spring 3.0版本后,自带了一个定时任务工具,不用配置文件,可以动态改变执行状态。也可以使用cron表达式设置定时任务。 被执行的类要实现Runnable接口 TaskScheduler是一个接口,它定义了6个…

具有梯度流的一类系统的扩散图卡尔曼滤波(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

FEW-SHOT TEXT CLASSIFICATION WITH DISTRIBUTIONAL SIGNATURES

摘要 在这篇文章中,我们利用元学习进行文本分类,元学习在计算机视觉中有相当好的效果,在这里,低层次的模式可以跨学习任务迁移的,,然而,直接将这个方法应用到文本中是具有挑战性的,…

【自学C++】C++输入cin

C输入cin C输入cin教程 在 C 语言 中我们需要捕获用户的键盘输入,可以使用 scanf 函数。scanf 函数在输入时,我们必须要指定输入的数据类型对应的格式化符,挺不方便。 在 C 中,我们要捕捉用户的输入,直接使用 std 命…

【目标检测】C-GhostNet

1、论文 论文题名:《GhostNet: More Features from Cheap Operations》 arxiv:https://arxiv.org/abs/1911.11907 github:https://github.com/huawei-noah/ghostnet 作者翻译:https://zhuanlan.zhihu.com/p/109325275 2、摘要 本篇论文是华…

2023/1/6 Vue学习笔记-2

1 收集表单数据 收集表单数据&#xff1a; 若&#xff1a;<input type"text">&#xff0c;则v-model收集的是value的值&#xff0c;用户输入的就是value值。 若&#xff1a;<input type"radio">&#xff0c;则v-modle收集的是value的值&…

String、StringBuffer和StringBuilder

String 类是不可变类&#xff0c;即一旦一个 String 对象被创建以后&#xff0c;包含在这个对象中的字符序列是不可改变的&#xff0c;直至这个对象被销毁。 Java 提供了两个可变字符串类 StringBuffer 和 StringBuilder&#xff0c;中文翻译为“字符串缓冲区”。 StringBuil…

Python和MySQL对比(3):用Pandas 实现MySQL的子查询、like_regexp、case when_if语法效果

文章目录一、前言二、语法对比数据表子查询like/regexpcase when/ifin三、小结一、前言 环境&#xff1a; windows11 64位 Python3.9 MySQL8 pandas1.4.2 本文主要介绍 MySQL 中的子查询、like/regexp、case when/if 如何使用pandas实现&#xff0c;同时二者又有什么区别。 注…

FPGA中二进制数的运算

一、B比特的二进制数可以表示的范围 无符号整数&#xff1a;0~2B-1 有符号整数&#xff1a;-2B-1~2B-1-1 二、有符号数&#xff08;补码&#xff09;与十进制数之间的转换 D&#xff1a;十进制数 B&#xff1a;二进制数aB-1aB-2a1a0的位数 aB-1:符号位 三、符号位拓展 在使…

Android 12 蓝牙适配 Java版

Android 12.0蓝牙适配前言正文一、Android版本中蓝牙简介二、新建项目① 配置build.gradle② 配置AndroidManifest.xml三、打开蓝牙① 打开蓝牙意图② 请求BLUETOOTH_CONNECT权限意图四、蓝牙扫描① 扫描者② 扫描回调③ 扫描方法④ 执行扫描⑤ 应用不推导物理位置五、页面显示…

基于Java+Springboot+vue体育用品销售商城平台设计和实现

基于JavaSpringbootvue体育用品销售商城平台设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取…

Docker部署JAVA项目

一、 Docker安装 1、yum 包更新到最新 yum update 2、安装需要的软件包&#xff0c; yum-util 提供yum-config-manager功能&#xff0c;另外两个是devicemapper驱动依赖的 yum install yum-utils device-mapper-persistent-data lvm2 -y 3、 设置yum源 yum-config-manage…

等级保护----1、网络安全等级保护一级安全测评要求

文章目录一、安全测评通用要求1、安全物理环境1.1 物理访问控制1.2 防盗窃和防破坏1.3 防雷击1.4 防火1.5 防水和防潮1.6 温湿度控制1.7 电力供应2、安全通信网络2.1 通信传输2.2 可信验证3、安全区域边界3.1 边界防护3.2 访问控制3.3 可信验证4、安全计算环境4.1 身份鉴别4.2 …