Sidcraft performance

Measured numbers for a page with 200 units: what saving costs, what a page view costs on the server, how many bytes of CSS and JavaScript Sidcraft adds, and how long the editor takes to open. The same commands are in the plugin, so you can measure your own site.

Updated . Measured with Sidcraft 0.15.0, without Sidcraft Pro unless noted.

Test setup

Test page200 units: 20 containers, each with a heading, rich text, image, button, icon list, divider, counter, accordion and testimonial. Document JSON 117 KB.
Comparison pageA plain block-editor page with one paragraph, on the same site.
SoftwareWordPress 6.9, Twenty Twenty-Five theme, PHP 8.3 with OPcache, no persistent object cache. Linux container, PHP's built-in web server with 4 workers, SQLite database.
BrowserHeadless Chromium, 1440 × 900, cache cleared before each run.
RunsServer figures: median of 3 runs. Editor: median of 5 runs. Times on a tuned host with MySQL and a full web server will be lower; compare the two pages and the before/after rows rather than the absolute milliseconds.

Page views

Measure200-unit pagePlain page
Server time (request start to end)325 ms54 ms
Peak PHP memory14 MB14 MB
Database queries3428
Database writes during the page view00
HTML211 KB64 KB
CSS added by Sidcraft139 KB (21 KB gzip)0
JavaScript added by Sidcraft40 KB (12 KB gzip)0

Pages without a Sidcraft layout load no Sidcraft CSS or JavaScript at all. On a Sidcraft page the CSS is three files: the shared front-end stylesheet (78 KB, 14 KB gzip), the site's design tokens (14 KB, 2 KB gzip) and the page's own compiled CSS (46 KB, 4 KB gzip). Unit scripts load only for the units on the page.

Render cost. Rendering the 200 units takes about 205 ms the first time in a request and about 40 ms when the unit fragment cache already holds them. The fragment cache lasts across page views only with a persistent object cache (Redis or Memcached); without one, each page view renders from scratch. Full-page caching avoids the render entirely, and Sidcraft clears the page from the common page-cache plugins when you save.

With Sidcraft Pro active, page-view times were in the same range (305 to 360 ms).

Saving

Measure200-unit page
Save that changes the layout757 ms, 17 database writes (document, hash, readable copy, revision, cache invalidation)
Save with nothing changed177 ms, 0 database writes

An unchanged save is recognised by comparing a hash of the normalized layout, so it does not rewrite the document, create a revision, clear CSS or purge page caches.

Editor start-up

Measure200-unit page10-unit page
Time until every unit is on the canvas and in the Navigator1.8 s1.4 s
JavaScript heap in use31 MB30 MB
Editor scripts and styles1,388 KB (306 KB gzip), cached by the browser after the first visit
Editor page HTML (includes unit definitions)659 KB (88 KB gzip)548 KB

Improved in 0.15.0. Every unit used to carry its own copy of the ~100 shared Style and Advanced control definitions. They are now sent once, which made the editor page much smaller:

Editor page HTML0.14.40.15.0
Sidcraft1,657 KB (110 KB gzip), ready in 2.0 s659 KB (88 KB gzip), ready in 1.8 s
Sidcraft with Sidcraft Pro (208 units)5,913 KB (426 KB gzip)2,007 KB (254 KB gzip), ready in 2.5 s

Where the remaining cost is

Measure your own site

On the server, with WP-CLI:

wp sidcraft-page-builder benchmark
wp sidcraft-page-builder benchmark --units=500 --format=json

It creates two temporary published pages (one with a 200-unit layout, one without), measures saving, rendering and a real page view of each, and deletes them again. Page views are requested over HTTP from the server to itself; if a page cache answers instead of WordPress, the command says so. Add --keep to keep the pages.

In a browser, from the plugin's source repository (needs Node.js and Playwright):

wp sidcraft-page-builder benchmark --keep
node tools/bench-editor.mjs --url=https://your-site.test --user=admin --pass=… --post=<page ID> --runs=5