2019 年 7 月 29 日,星期一
作者:Sandy Galloway

DataTables 下载统计 - 2019

大家好,我是 Sandy,从今年夏天开始,我一直与 DataTables 团队的其他成员一起致力于 DataTables 的开发。我目前正在斯特拉斯克莱德大学攻读计算机与电子系统专业。我即将开始我的第三年学习,并且真的很享受我在那里和 DataTables 的时间。我的第一个项目是开发一个优化的 CDN 传递服务器(本文的主题),最近我开始开发备受期待的 SearchPane 扩展(将在以后的文章中详细介绍)!

CDN 统计

随着不断需要提高 DataTables 包整体性能,我们决定升级 CDN 分发。在进行此项任务之前,我们决定分析当前 CDN 使用情况的统计数据及其使用方法。此处分析的数据被用于内部优化新 CDN 服务器以适应实际使用情况。我们发现结果很有趣,因此发布这篇文章纯粹是为了向 DataTables 社区提供信息,而不是为了任何实际目的。

这篇文章将总结迄今为止的分析结果。 之前的文章讨论了非常类似的主题,可以在这里找到,虽然此分析可以更深入,因为我使用了之前不可用的 CloudFlare 提供的日志。未来的一篇文章将描述所开发的服务器软件及其部署(注意,在撰写本文时它尚未部署)。

关于阅读时间线图的说明

在本文中,您将遇到各种时间线图。这些图表显示了对 DataTables 的某个扩展或组件的每个版本的请求数量。总的趋势是,最近发布的版本的请求数量更高。但是,这些数字会受到发布间隔和发布包含在构建器功能中的时间长度的影响。在这些图表中,预计数据点的值越高,它与下一个数据点之间的时间间隔越长。同样值得注意的是,有些版本是在彼此相隔 24 小时内发布的,在这种情况下,由于微小的值(如果有)会使图表更易于阅读,因此省略了较早的两个值中的一个。还应该注意的是,未收到点击次数的版本也出于类似的原因被省略。

数据集

用于编译这些统计数据的数据由 CloudFlare 提供,我们使用他们作为缓存服务来处理 CDN 的大多数请求。我们使用从 2019 年 6 月 5 日 00:00 到 2019 年 6 月 6 日 00:00 记录的 24 小时数据。这为研究提供了超过 800 万个数据点。

同样值得注意的是,DataTables 在其他 CDN 和 GitHub 上广泛可用。因此,这些数字并未显示 DataTables 的全部使用情况,但它确实提供了对全球范围内 DataTables 使用情况的良好洞察。

概述

在深入探讨 DataTables 和扩展使用情况的细节之前,让我们考虑一下更大的图景,并了解 DataTables CDN 上的软件是如何使用和请求的。

压缩

DataTables 生成器页面上包含的选项之一是压缩脚本。91.7% 对构建器的请求都包含压缩选项。平均压缩文件大小为 64.7 KB。未压缩文件的平均大小为 224.6 KB。

构建器

使用当前版本的下载“构建器”(我们称之为用于 下载页面 的文件串联软件,它已被拆分为多个版本,在请求 URL 中以字母作为前缀。请注意,使用新的分发服务器后,将不再是这样,但仍然支持旧式 URL!

构建器的最流行版本是 v,占请求的 75.8%。它已可用很长时间了,比其他版本要长。

Builder version usage

样式

DataTables 包含各种样式选项。最受欢迎的选项是默认的 DataTables 样式框架,占请求的 56.4%。接下来最受欢迎的是 Bootstrap 3,占请求的 25%。

Styling framework usage

jQuery

86.7% 的构建请求不包括 jQuery。最流行的 jQuery 版本是 jQuery 3,占请求的 7.0%,包括它。

jQuery included in build requests

返回时间

对 CDN 的所有请求的平均返回时间为 0.03 秒。

对 CDN 的请求导致缓存命中的平均返回时间为 0.007(0.01)秒。

对 CDN 的请求导致构建的平均返回时间为 0.03(0.23)秒。

文件大小

构建请求后从 CDN 返回的平均文件大小为 33.8KB(30.5 KB)。

.js 文件的平均文件大小为 66.5 KB(56.2 KB)。

.css 文件的平均文件大小为 4.2 KB(4.1KB)。

设备

毫无疑问,桌面设备的点击次数最多,占 63.8%。移动设备紧随其后,占 31.5%。平板电脑只占 4.7%。

Device usage

协议

绝大多数请求来自 http/2 协议,占 77.4%。http/1.1 紧随其后,占 21.8%,而 http/1.0 仅占 0.8%。

Protocol usage

浏览器

最流行的浏览器是 Chrome/74,占 14.0%。

Safari 紧随其后,占 6.8%。

Edge/18 是出现频率最低的浏览器,仅占 2.8%。

Browser distribution

缓存

构建器请求在 96% 的情况下返回缓存命中,平均返回时间仅为 0.01 秒。

仅在 2.5% 的情况下记录了缓存未命中,平均返回时间为 0.62(0.64)秒。

Cache response type

在到达构建器的结果中,86.2% 导致构建操作发生。12.3% 的请求从构建器 CDN 上的缓存中返回。仅有 1.6% 的 CDN 请求导致错误。

Result of request to CDN

请求最多的文件

请求最多的文件是目前在构建器上提供的最基本版本的 DataTables,没有任何扩展,版本为 1.10.19。紧随其后的是没有扩展的版本 1.10.16。

Most requested files

这进一步细分为 javascript 和 CSS 文件。最受欢迎的 Javascript 文件几乎都是 DataTables 的基本版本。

Most requested JS files

请求最多的 CSS 文件也主要是最近发布的几个版本的 DataTables,没有任何扩展。

Most requested CSS files

突发性

我们通过分析 10 分钟时间段内的數據来分析突发性。通过获取所有时间段的平均请求数量,可以计算出标准偏差。

在对 CloudFlare 的请求中,每个 10 分钟时间段的平均请求数量略高于 562,000。这得出的标准偏差约为 140,000 或 24.9%。

在对构建器的请求中,每个 10 分钟时间段的平均请求数量为 62662。这得出的标准偏差约为 18796 或 29.9%。10 分钟时间段的峰值请求数为 97295,这使得每秒的最大平均请求数为 167。

DataTables 版本

从 CDN 请求的最流行的 DataTables 版本是 1.10.18,它是构建器上可用的最新版本,自 2018 年 6 月 14 日起可用,占 31.4%。紧随其后的是版本 1.10.12,占 21.6%。这些是典型预期结果,因为版本 1.10.13-17 在构建器上只可用很短时间。

DataTables version usage

下面的图表显示了 DataTables 版本的流行度与其发布日期的对比。

DataTables version popularity

扩展

所有扩展都经过了单独分析和整体分析。每个扩展的单独分析可以在下面相关的标题下找到。

最受欢迎的扩展是响应式。它被包含在从 CDN 请求的构建请求的 36.5% 中。

Extension inclusion in build requests

65% 的构建请求没有包含任何扩展,并且有 17,832(81)次请求所有扩展。如果使用了所有扩展,这很好,但应该注意,这会显著降低响应时间。因此,应尽可能避免包含所有扩展。

Number of Extensions includes

每个构建请求的平均扩展数为 1.66(1.26)。至少包含一个扩展的构建请求的平均次数为 4.75(4.30)。

返回时间将在后面提到,但似乎应该注意,所有类型的构建请求的平均返回时间为 0.029(0.026)秒。平均文件大小略高于 33 KB(30 KB)。

自动填充

最流行的自动填充版本是 2.2.2,占自动填充请求的 31.4%,领先于版本 2.2.0,占 25.1%。这是一个有趣的结果,考虑到从 2.3 开始,尽管已经发布了一年多,但只占 19.6%。

AutoFill version usage

下面的图表显示了自动填充版本的流行度与其发布日期的对比。

AutoFill version popularity

按钮

最受欢迎的按钮版本是 1.5.1,占 21.4%,其次是 1.2.2,占 15.7%。 (两个 1.5.1 占 16.9%,1.5.2 占 16.0%。另一个有趣的结果,考虑到 1.2.2 和 1.5.1 的提交到 github 的时间一样长。)

Button version usage

下面的图表显示了按钮版本的流行度与其发布日期的对比。

Button version popularity

按钮子扩展

有 4 个子扩展可以与按钮一起使用。虽然 61.3% 的请求没有包含添加这些扩展之一的请求,但最受欢迎的是 HTML,占 12.9%。

Buttons sub-extensions count

列重排

最受欢迎的列重排版本是 1.4.1,它获得了 37.7% 的份额,紧随其后的是 1.5.0,占 30.8%。1.5.0 是添加到生成器中的最新版本,并且已经发布了将近一年了。 (1.5.0 是添加到生成器中的最新版本,并且已经发布了将近一年了。它获得了 33.1% 的份额,紧随其后的是版本 1.4.1,它获得了 29.5% 的份额。)

ColReorder version usage

下面的图表显示了列重排版本的流行度与其发布日期的对比。

ColReorder version popularity

FixedColumns

FixedColumns 最流行的版本是 3.2.5,占有率为 35.5%。3.2.5 已经发布将近一年了。紧随其后的是 3.2.2,占有率为 34%。3.2.2 在 Generator 上发布了 16 个月。(随后是 Generator 上最新发布的版本 3.2.5,占有率为 34.6%,已经发布将近一年了。)

FixedColumn version usage

下图显示了 FixedColumns 版本的流行程度与其发布日期的关系。

FixedColumn version popularity

FixedHeader

FixedHeader 最流行的版本是 3.1.2,占有率为 45.9%。考虑到它在 2016 年到 2017 年之间发布了 19 个月,这并不令人意外。紧随其后的是 3.1.4,这是 Generator 上最新的版本,占有率为 27.9。

FixedHeader version usage

下图显示了 FixedHeader 版本的流行程度与其发布日期的关系。

FixedHeader version popularity

KeyTable

KeyTable 最流行的版本是 2.3.2,占有率为 31.4%。紧随其后的是 Generator 上最新发布的版本 2.5.0,占有率为 24.5%。

KeyTable version usage

下图显示了 KeyTable 版本的流行程度与其发布日期的关系。

KeyTable version popularity

Responsive

Responsive 最流行的版本是 2.2.2,占有率为 31.7%。这是 Generator 上最新的 Responsive 版本,已经发布将近一年了。

Responsive version usage

下图显示了 Responsive 版本的流行程度与其发布日期的关系。

Responsive version popularity

RowGroup

RowGroup 最流行的版本是 1.0.2,占有率为 48.1%。考虑到它在被 1.1.0 替换之前,在 Generator 中使用的时间最长,并且 1.1.0 的占有率为 27.7%,这并不令人意外。

RowGroup version usage

下图显示了 RowGroup 版本的流行程度与其发布日期的关系。

RowGroup version popularity

RowReorder

RowReorder 最流行的版本是 1.2.3,占有率为 33.2%,其次是 1.2.4,这是最新发布的 RowReorder 版本,占有率为 27.5%。

RowReorder version usage

下图显示了 RowReorder 版本的流行程度与其发布日期的关系。

RowReorder version popularity

Scroller

Scroller 最流行的版本是 1.4.2,占有率为 53.0%。考虑到它发布了 16 个月,这并不令人意外。紧随其后的是 1.5.0 版本,占有率为 13.5%,它是 Generator 上最新的版本,直到最近发布了 2.0.0 版本。

Scroller version usage

下图显示了 Scroller 版本的流行程度与其发布日期的关系。

Scroller version popularity

Select

Select 最流行的版本是 1.2.6,占有率为 48.3%。它最近被 1.3.0 版本替换。1.2.6 的前身占有率为 15.6%,位居第二。

Select version usage

下图显示了 Select 版本的流行程度与其发布日期的关系。

Select version popularity

Legacy Extensions

Table Tools

尽管被 Buttons 和 Select 扩展替换,并且无法通过下载构建器获得,TableTools 仍然通过通用 CDN 看到一些使用,占有率为 0.6%。如果您使用的是 TableTools,我们强烈建议您考虑升级到更新的扩展。

ColVis

ColVis 也看到了一些使用,占有率为 0.4%,包含在 CDN 中。同样,如果您使用的是 ColVis,我们强烈建议您考虑升级到更新的扩展,在本例中为 Buttons。