CMS Performance

Joining the HTTP Archive’s technology detection with the Chrome UX Report makes for some really interesting analyses.

I’m giving a presentation tomorrow at DrupalEurope about performance and it’s really compelling to be able to show how the user experience varies by CMS. Here’s a query that calculates the average FCP distribution for each CMS detected by Wappalyzer in the HTTP Archive:

SELECT
  app,
  COUNT(DISTINCT origin) AS freq,
  ROUND(SUM(IF(bin.start < 1000, bin.density, 0)) / SUM(bin.density), 4) AS fast,
  ROUND(SUM(IF(bin.start >= 1000 AND bin.start < 3000, bin.density, 0)) / SUM(bin.density), 4) AS avg,
  ROUND(SUM(IF(bin.start >= 3000, bin.density, 0)) / SUM(bin.density), 4) AS slow
FROM
  `chrome-ux-report.all.201808`,
  UNNEST(first_contentful_paint.histogram.bin) AS bin
JOIN (
  SELECT
    url,
    app
  FROM
    `httparchive.technologies.2018_08_15_desktop`
  WHERE
    category = 'CMS'
  GROUP BY
    url,
    app)
ON CONCAT(origin, '/') = url
GROUP BY
  app
ORDER BY
  freq DESC

Sorting the CMSs by popularity, there isn’t really a clear correlation with performance, but it’s still interesting to see the relative performance of each one.

image

Some observations:

  • Drupal has a higher density of fast FCP than WordPress
  • Wix, Squarespace, Joomla, and WordPress have < 25% fast FCP
  • All CMSs are average FCP (between 1 and 3s) at the 50th percentile
  • TYPO3 has the highest density of fast FCP
6 Likes

Interesting stats. Wonder how that breaks down by mobile vs desktop ? :slight_smile:

Yeah, it’s easy to add the form factor dimension:

SELECT
  app,
  COUNT(DISTINCT origin) AS freq,
  IF(form_factor.name = 'desktop', 'desktop', 'mobile') AS form_factor,
  ROUND(SUM(IF(bin.start < 1000, bin.density, 0)) / SUM(bin.density), 4) AS fast,
  ROUND(SUM(IF(bin.start >= 1000 AND bin.start < 3000, bin.density, 0)) / SUM(bin.density), 4) AS avg,
  ROUND(SUM(IF(bin.start >= 3000, bin.density, 0)) / SUM(bin.density), 4) AS slow
FROM
  `chrome-ux-report.all.201808`,
  UNNEST(first_contentful_paint.histogram.bin) AS bin
JOIN (
  SELECT
    url,
    app
  FROM
    `httparchive.technologies.2018_08_15_desktop`
  WHERE
    category = 'CMS'
  GROUP BY
    url,
    app)
ON CONCAT(origin, '/') = url
GROUP BY
  app,
  form_factor
ORDER BY
  freq DESC

Explore the raw data

4 Likes

@rviscomi thanks for that as expected mobile vs desktop.

Wix though wow desktop is as bad as mobile !

1 Like

Changing the category to “ECommerce” gives us this

image

1 Like

I would love to see how Umbraco CMS compares in this test.

Pretty good!

app Fast Average Slow
Umbraco 45.61% 36.54% 17.86%

You can explore all CMSs in this sheet

3 Likes

Hey @rviscomi - Can I reference some of your slides in a post I am writing for one of the search publications?

@dawnieando Of course!

1 Like

Thanks. Do you think there is anything I can do with this to pull in the Wordpress theme frameworks to get some measures?

@rviscomi Thank you!

@dawnieando we can query any of the 1000 technologies detected by Wappalyzer but there is no explicit support for specific WordPress themes. If there’s anything of value that you’d like to detect in HTTP Archive, adding it upstream to Wappalyzer would be the way to go.

2 Likes

Thanks. I have a couple of hundred URLs and as suggested I’m using @andydavies very useful script :slight_smile:

1 Like

Adding as many WordPress plugin detections as possible to Wappalyzer sounds like a great way to get some pressure to improve plugin performance! In particular, producing that graph across all WP sites split as “has plugin X / does not have plugin X”

1 Like

Hello, I am trying to get some data (for example “bytesTotal” or “bytesCSS”) for Websites made with Plone. I am pretty new to writing custom queries and now I am stuck.

I know that the data i am trying to get is within the “summary_pages” dataset and Plone sites are in the “technologies” dataset, but I can not figure out how to connect those 2 datasets to get the outcome I want.

#Edit
With more research i did figure it out myself.

@RKomen2609 nice! Glad to hear you figured it out. Could you share your findings and the queries you used in a new thread? It’s always great to have more examples of the questions/answers people have.

Hi @rviscomi !
Can you, please, tell us, how many URLs/websites have been monitored for making this graph?
Thank you so much!!!

The sample size metric tracks the number of websites in HTTP Archive at any given time. You can see it in the State of the Web report on our website:

image

These queries corresponded to the August 15 dataset, which had about 1.3M websites.

Thank you @rviscomi (now answering, sorry for the missunderstood)!
We are talking (in spanish), about the sample and how much is each CMS represented. Maybe in WordPress is over represented and others, as Movable Type, underepresented.
But those graphics are terrific, thank you for sharing and for your work, guys!!

1 Like

Just wanted to drop a couple of appreciation points here. This data is awesome!

1 Like