CMS Performance


#1

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.

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

Loading Speed across JS Frameworks
#2

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


#3

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

@rviscomi thanks for that as expected mobile vs desktop.

Wix though wow desktop is as bad as mobile !


#5

Changing the category to “ECommerce” gives us this


#6

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


#7

Pretty good!

app Fast Average Slow
Umbraco 45.61% 36.54% 17.86%

You can explore all CMSs in this sheet


#8

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


#9

@dawnieando Of course!


#10

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


#11

@rviscomi Thank you!


#12

@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.


#13

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


#14

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”