抑制增量渲染在做什么?

Dav*_*vid 1 xcode rendering swift wkwebview wkwebviewconfiguration

我正在使用最新版本的XcodeSwift

我在谷歌上搜索以使我的KWWebView速度更快,发现了以下内容:

webConfiguration.suppressesIncrementalRendering = true
Run Code Online (Sandbox Code Playgroud)

文档说明如下:

一个布尔值,指示 Web 视图是否抑制内容呈现,直到其完全加载到内存中。

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

Ven*_*key 6

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

网络引擎:

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

如何让我的页面更快?

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

您始终可以在现代浏览器上检查页面的分析(例如开发工具),以了解事情进展情况、分配的内存大小、包大小、脚本编写时间、页面设计为如何使用/利用设备资源。

长话短说:

一般来说,页面在浏览器中运行时必须经历三个主要阶段,总共五个步骤:

A 阶段:内存/计算(CPU)

1- 脚本编写:

B阶段:(主要处理CPU)

2-造型

3-布局

C 阶段:(GPU 电源!)

4- 油漆

5- 成分

当浏览器决定更新时,它必须经历这些,完整通过或部分通过都会产生很大的差异。考虑下面的例子

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

  • 那些刚刚写代码的人:随着时间的推移改变 div 样式的 left 值。(简单吧?)

  • 那些了解这些的人:使用translateX 或translate3D 进行转换。

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

为什么 ?

第一种方法使用神圣的左值,这意味着浏览器必须重新计算新的左值(步骤 1)> 检查样式(步骤2 )> 然后进行新的布局(步骤3)> 进行绘制(步骤 4)>然后进入构图阶段(第5步

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

另一方面,另一种方法除了组合之外不需要任何东西(步骤 #5),因为 GPU 中的矩阵操作(相当强大的能力!)可以处理使用 translate3d 或 translateX 隐含的位移!你会看到人们谈论在你的 CSS 元素上包含一个 translate3d 属性来提高性能(哈!),但真正的原因是上面解释的。所以了解幕后发生的事情可以拯救你。

Supperess 渲染是指在开始显示内容之前等待加载所有内容,或者只是尝试在加载内容时处理它们。