Monday 29th July, 2019
By Sandy Galloway

DataTables download statistics - 2019

Hi everyone, I'm Sandy and I've been working on DataTables with the rest of the team since the start of the Summer. I am currently studying Computer and Electronic Systems at the University of Strathclyde. I'm just about to start my third year of studying and am really enjoying my time both there and here at DataTables. My first project was to develop a optimised CDN delivery server (the subject of this blog post) and I have recently moved on to developing the much anticipated SearchPane extension (more about which in a future post)!

CDN Statistics

With the continued need to improve the performance of the DataTables package as a whole, it was decided that there was also a need to upgrade the CDN distribution. Before such a task was undertaken, a decision was made to analyse the current statistics on the current use of the CDN and how it is being used. The data analysed here is being used internally to optimise the new CDN server for real world usage. We found the results interesting so are publishing this post purely to provide information for the interest of the DataTables community rather than anything practical.

This post will summarise the findings of the analysis so far. A previous post on a very similar topic can be found here, although this analysis can go deeper as I've used the logs available from CloudFlare which wasn't available before. A future post will describe the server software developed and its deployment (note that it has not yet been deployed at the time of writing this post).

A Note on Reading Timeline Graphs

Throughout this post you will come across various timeline graphs. These show the number of requests for each version of a certain extensions or component of DataTables. As a general trend it would be expected that the number of uses in more recently released versions is higher. However, the numbers are impacted by the spacing between releases and the releases length of time included in the builder feature. In these graphs it is expected that the value of a data point will be higher, the longer the gap in time is between it and the next data point. It is also worth noting that some releases were within 24 hours of each other, where this has occurred the earlier of the two values has been omitted due to tiny values (if any) making the graph more readable. It should also be noted that versions which received no hits were also omitted for a similar reason.

Data Set

The data used to compile these statistics were provided by CloudFlare, who we use as a caching service to handle the majority of the requests made to the CDN. We are using 24 hours of data which was recorded from 00:00 on the 5th June 2019 until 00:00 on the 6th June 2019. This provided the study with over 8 million points of data.

It is also worth noting that DataTables is widely available on other CDNs and GitHub. Therefore, these numbers do not show DataTables usage to its full extent but it does provide a good insight into its usage across the globe.

Overview

Before drilling into the details of the DataTables and extensions usage, let's consider the bigger picture and see how the software on the DataTables CDN is used and requested.

Minify

One of the options included on the DataTables Generator page is to minify the scripts. 91.7% of requests to the builder included the minify option. The average minified file size was 64.7 KB. The average size of non minified files was 224.6 KB.

Builder

With the current version of the download "Builder" (what we call the software that does the concatenation of files for the download page it has been split into multiple versions, prefixed with a letter in the request URL. Note that this will no longer be the case with the new distribution server, although the old style URLs will still be supported!

The most popular version of builder was v with 75.8% of the share of requests. It has been available for significantly longer than the other versions.

Builder version usage

Styling

DataTables contains a variety of styling options. The most popular option is the default DataTables styling framework with 56.4% of the share of requests. The next most popular is Bootstrap 3 with 25% of requests.

Styling framework usage

jQuery

86.7% of build requests did not include jQuery. The most popular version of jQuery was jQuery 3 with 7.0% of the share of requests including it.

jQuery included in build requests

Return Time

The average return time for all requests to the CDN was 0.03 seconds.

The average return time for requests to the CDN that resulted in a cache hit was 0.007 (0.01) seconds.

The average return time for requests to the CDN that resulted in a build was 0.03 (0.23) seconds.

File Sizes

The average file size returned from the CDN after a build request was 33.8KB (30.5 KB).

The average file size of .js files was 66.5 KB (56.2 KB).

The average file size of .css files was 4.2 KB (4.1KB).

Devices

The highest number of hits were from desktop devices unsurprisingly, with 63.8% of the share. Mobile devices followed with 31.5% of the share. Tablets accounted for only 4.7% of the share.

Device usage

Protocol

The vast majority of requests came from an http/2 protocol, accounting for 77.4% of the share. http/1.1 followed with 21.8% and http/1.0 had only 0.8% of the share.

Protocol usage

Browsers

The most popular browser was Chrome/74 with 14.0% of the share.

Safari followed closely with 6.8% of the share.

Edge/18 was the least recurring browser with only 2.8% of the share.

Browser distribution

Cache

Builder requests returned a Cache hit on 96% of occasions, having an average return time of only 0.01 seconds.

A Cache miss was recorded on only 2.5% of occasions, having an average return time of 0.62 (0.64) seconds.

Cache response type

Of the results that reached the builder 86.2% resulted in a build operation occurring. 12.3% of requests were returned from the cache on the builder CDN. Only 1.6% of requests to the CDN resulted in an error.

Result of request to CDN

Most Requested Files

The most requested file was the most basic version of DataTables that is currently available on the Builder with no extensions, 1.10.19. This was closely followed by version 1.10.16 with no extensions.

Most requested files

This was broken down further into javascript and CSS files. The most popular Javascript files were almost all basic versions of DataTables.

Most requested JS files

The most requested CSS files were also mainly the latest few versions of DataTables to be released, with no extensions.

Most requested CSS files

Burstiness

We analysed the burstiness by analysing data in 10 minute segments. By taking the average number of requests across all of the segments, it was possible to calculate the standard deviation.

Of the requests to CloudFlare the average per 10 minute segment was just over 562,000. This gave a standard deviation of around 140,000 or 24.9%.

Of the requests to the builder the average per 10 minute segment was 62662. This gave a standard deviation of around 18796 or 29.9%. The peak request for a 10 minute segment was 97295, giving a maximum average per second of 167.

DataTables Versions

The most popular version of DataTables being requested from the CDN is 1.10.18, which is the latest version available on the Builder and has been available since the 14th of June 2018, accounting for 31.4% of the share. This was followed by version 1.10.12 with 21.6% of the share. These are the results that would be typically expected as versions 1.10.13-17 were only available on the builder for much shorter times each.

DataTables version usage

The graph below shows the popularity of the versions of DataTables against it's release date.

DataTables version popularity

Extensions

All of the extensions were analysed both individually and as a group. The individual analysis for each extension can be found under the relevant heading below.

The most popular extension was responsive. It was included in 36.5% of the build requests that were requested from the CDN.

Extension inclusion in build requests

65% of build requests did not have any inclusion of extensions, and there were 17,832 (81) counts of all of the extensions being requested. This is fine if all of the extensions are being used, however it should be noted that it will slow down the response time significantly. Therefore including all of the extensions should be avoided if at all possible.

Number of Extensions includes

The average number of extensions per build request was 1.66 (1.26). The average number of build requests when including at least 1 extension was 4.75 (4.30).

Return times are mentioned later, but it seems appropriate to note that the average return time for all types of build requests was 0.029 (0.026) seconds. The average file size was just over 33 KB (30 KB).

AutoFill

The most popular AutoFill version was 2.2.2 with 31.4% of the share of AutoFill requests, ahead of version 2.2.0 with 25.1% of the share. Interesting results considering that from 2.3 onwards only accounts for 19.6% of the share, despite having been released for over a year.

AutoFill version usage

The graph below shows the popularity of the versions of AutoFill against it's release date.

AutoFill version popularity

Buttons

The most popular version of Buttons was 1.5.1 with 21.4% of the share, followed by 1.2.2 with a 15.7% share. (a couple of 1.5.1 with a 16.9% share and 1.5.2 with a 16.0% share. Another interesting result considering 1.2.2 was committed to github for just as long as 1.5.1.)

Button version usage

The graph below shows the popularity of the versions of Buttons against it's release date.

Button version popularity

Buttons Sub-Extensions

There are 4 sub-extensions that may go along with Buttons. While 61.3% of requests did not contain a request to add one of these extensions, the most popular was HTML with 12.9% of requests containing it.

Buttons sub-extensions count

ColReorder

The most popular version of ColReorder was 1.4.1 which received 37.7% of the share closely followed by 1.5.0 with 30.8%. 1.5.0 is the most recent version to be added to the Generator and has been available for approaching a year now. (1.5.0 which is the most recent version to be added to the Generator and has been available for approaching a year now. It received 33.1% of the share, it was closely followed by version 1.4.1 which held 29.5% of the share.)

ColReorder version usage

The graph below shows the popularity of the versions of ColReorder against it's release date.

ColReorder version popularity

FixedColumns

The most popular version of FixedColumns was 3.2.5 with a 35.5% share. 3.2.5 has been available for almost a year. This was closely followed by 3.2.2 with a 34% share. 3.2.2 was available on Generator for 16 months. (It was followed by the most recent version available on the Generator, 3.2.5, which held 34.6% of the share and has been available for almost a year.)

FixedColumn version usage

The graph below shows the popularity of the versions of FixedColumns against it's release date.

FixedColumn version popularity

FixedHeader

The most popular version of FixedHeader was 3.1.2 with 45.9% of the share. Unsurprising considering it was available for 19 months between 2016 and 2017. Following that was 3.1.4 which is the most recent version available on Generator with a share of 27.9.

FixedHeader version usage

The graph below shows the popularity of the versions of FixedHeader against it's release date.

FixedHeader version popularity

KeyTable

The most popular version of KeyTable is 2.3.2 with a 31.4% share of the results. This was followed by the latest release on Generator, 2.5.0 which held an 24.5% share.

KeyTable version usage

The graph below shows the popularity of the versions of KeyTable against it's release date.

KeyTable version popularity

Responsive

The most popular version of responsive was 2.2.2 with a 31.7% share of the results. This is the most recent release of responsive on the Generator and has been available for almost a year.

Responsive version usage

The graph below shows the popularity of the versions of Responsive against it's release date.

Responsive version popularity

RowGroup

The most popular version of RowGroup is 1.0.2 with 48.1% of the share of requests. Unsurprising given that it has spent the most amount of time being used in Generator before being replaced by 1.1.0 which held 27.7% of the share.

RowGroup version usage

The graph below shows the popularity of the versions of RowGroup against it's release date.

RowGroup version popularity

RowReorder

The most popular version of RowReorder was 1.2.3 with a 33.2% share of the requests., followed by 1.2.4 the most recently available version of RowReorder with a 27.5% share of the requests.

RowReorder version usage

The graph below shows the popularity of the versions of RowReorder against it's release date.

RowReorder version popularity

Scroller

The most popular version of Scroller was 1.4.2 with a 53.0% share. Unsurprising given that it was available for 16 months. This was followed by version 1.5.0 with 13.5% of the share which was the most up to date release on Generator until version 2.0.0 was recently released.

Scroller version usage

The graph below shows the popularity of the versions of Scroller against it's release date.

Scroller version popularity

Select

The most popular version of Select was 1.2.6 with 48.3% share of the results. It has recently been replaced by version 1.3.0. 1.2.6's predecessor was second with 15.6% of votes.

Select version usage

The graph below shows the popularity of the versions of Select against it's release date.

Select version popularity

Legacy Extensions

Table Tools

Despite being replaced by the Buttons and Select extensions and not being available via the download builder, TableTools still saw some use through the general CDN, with 0.6% of requests. If this is you, we would strongly advise you to consider upgrading to more recent extensions.

ColVis

ColVis also still saw some use, with 0.4% of requests to the CDN containing it. Again, if this is you, we would strongly advise you to consider upgrading to more recent extensions - in this case Buttons.