suppressesIncrementalRendering 在做什么?

What is suppressesIncrementalRendering doing?

我使用的是 XcodeSwift 的最新版本。

我四处搜索以使我的 KWWebView 更快,并发现以下内容:

webConfiguration.suppressesIncrementalRendering = true

文档说明如下:

A Boolean value indicating whether the web view suppresses content rendering until it is fully loaded into memory.

但这意味着什么?这是否意味着,只要 WKWebView 未完全加载图像和 javascript 文件等所有资源,html 就不会呈现和显示?

如文档中所述,它是一个标志,用于告诉 webview 引擎是否等待,直到一切都设置好并准备就绪。是否扫描文档(html+相关资源)以检查要定期重绘的内容,或者只是等待加载并准备好全部内容。

网络引擎:

渲染是一个渐进的过程,它取决于构成页面的资产(js、Css、图像..)。重要的是要了解打开或关闭此功能只会打开加载内容的渲染算法 on/off。

如何让我的页面更快?

很多因素,渲染算法(引擎的),你的脚本有多重(包,内存分配,事件传递和处理等),图像的大小,你的结构有多好CSS是,以及它的分层选择器组织(css解析和应用)。 资产在页面中加载(包括)的顺序。

您始终可以在现代浏览器上(例如 devtools) 检查您的页面配置文件,以查看运行情况、分配的内存大小、包大小,编写脚本的时间,页面的设计方式 consume/utilise 设备资源。

长话短说:

一般来说,有 三个 个主要阶段,总共有 五个步骤,您的页面在浏览器中必须经历这些阶段:

阶段 A:MEMORY/CALCULATION (CPU)

1- 脚本:

B 阶段:(主要处理 CPU)

2- 造型

3- 布局

阶段 C:(GPU 功率!)

4- 绘画

5-作文

当浏览器决定更新时,它必须经过这些,无论是完全通过还是部分通过都会有很大的不同。考虑以下示例

如果您有一个 div,并且您决定创建一个将其从屏幕左边缘移动到右边缘的动画,您会看到开发人员采用了两种方法:

  • 那些只会写代码的人: 随着时间的推移更改 div 样式的左值。 (简单吧?)

  • 了解内情的人: 使用 translateX 或 translate3D 进行转换。

两种方法都可以,第一种会耗尽你的 CPU,而第二种会 运行 以非常高的 FPS。

为什么?

第一种方法使用神圣的左值,这意味着浏览器将不得不重新计算新的左值 (STEP1) > 检查样式 (STEP2 ) > 然后做一个新的 LAYOUT (STEP 3) > 做一个 Paint (step 4) > 然后进入合成阶段 ( 第 5 步)

这将花费完整的 5 个阶段,这是完全没有必要的!!

另一方面,另一种方法只需要合成(第 5 步),因为 GPU 中的矩阵操作(相当强大的能力!)可以处理使用 translate3d 或 translateX 隐含的位移! !你会看到人们谈论在你的 CSS 元素上包含一个 translate3d 道具来提高性能(呵呵!)但真正的原因是上面解释的。所以了解引擎盖下发生的事情可以拯救你。

supperess 渲染是在开始显示之前等待加载所有内容,或者只是尝试在加载时处理内容..