<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Hugo Archives - The Beginner’s Playbook for Fixing WordPress Errors</title>
	<atom:link href="https://ceeveeglobal.com/tag/hugo/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceeveeglobal.com/tag/hugo/</link>
	<description>Effortless Fixes for WordPress Errors, Designed for Beginners</description>
	<lastBuildDate>Sun, 06 Sep 2026 13:15:29 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.6</generator>

<image>
	<url>https://s3.ceeveeglobal.com/ceeveeglobalimages/cropped-Untitled-YouTube-Icon-32x32.png</url>
	<title>Hugo Archives - The Beginner’s Playbook for Fixing WordPress Errors</title>
	<link>https://ceeveeglobal.com/tag/hugo/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>WordPress vs Static Site: I Measured Both, Here&#8217;s the Truth</title>
		<link>https://ceeveeglobal.com/wordpress-vs-static-site/</link>
					<comments>https://ceeveeglobal.com/wordpress-vs-static-site/#respond</comments>
		
		<dc:creator><![CDATA[Dimuthu Harshana]]></dc:creator>
		<pubDate>Sun, 06 Sep 2026 13:15:29 +0000</pubDate>
				<category><![CDATA[Beginner Guides]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[Hugo]]></category>
		<category><![CDATA[site speed]]></category>
		<category><![CDATA[static site]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://ceeveeglobal.com/?p=16146</guid>

					<description><![CDATA[<p>WordPress vs static site, measured on one machine with the scripts published: static won by 96x, until I turned caching on and the gap fell to 0.08ms.</p>
<p>The post <a href="https://ceeveeglobal.com/wordpress-vs-static-site/">WordPress vs Static Site: I Measured Both, Here&#8217;s the Truth</a> appeared first on <a href="https://ceeveeglobal.com">The Beginner’s Playbook for Fixing WordPress Errors</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The WordPress vs static site argument is fought almost entirely with numbers nobody measured. I went looking for a straight answer to one question: <strong>should I build my next site on WordPress, or generate it as static files?</strong></p>
<p>What I found was a table. One top-ranking guide publishes time-to-first-byte figures — 200 to 800 milliseconds for WordPress, 20 to 100 for static — and never says what hardware it ran on, what page it requested, what tool it used, or how many times it tried.</p>
<p>That is a range wide enough to be right no matter what happens — and Google&#8217;s AI summary already repeats those numbers back to me as fact.</p>
<p>So I stopped reading and built all three stacks on one machine at home, measured them with scripts I&#8217;m publishing, and got an answer that surprised me. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>The short version:</strong> static beat WordPress by 96×. Then I turned caching on, and the gap collapsed to 0.08 milliseconds.</p>
<h2>What You Need</h2>
<p>Everything runs on one Linux machine with Docker. No cloud account, no card, nothing to sign up for.</p>
<ul>
<li><strong>Docker and Docker Compose</strong> — the whole lab is containers</li>
<li><strong>WordPress 6.5, MariaDB 11, nginx 1.27</strong> — official images</li>
<li><strong>Hugo 0.128.0 (extended)</strong> — for the build-time test</li>
<li><strong>wrk and wget</strong> — load generator and export tool</li>
<li><strong>About an hour</strong>, most of it waiting</li>
</ul>
<p>Mine ran in a throwaway container on an Ubuntu Optiplex in my house — which is why I&#8217;m careful below about which numbers I&#8217;ll stand behind.</p>
<h2>The setup: four doors into one WordPress site</h2>
<p>Benchmark WordPress on one machine and a static site on another, with different themes and different content, and you haven&#8217;t compared platforms — you&#8217;ve compared two different websites. That&#8217;s why most of these numbers don&#8217;t mean much.</p>
<p>So I ran <strong>one</strong> WordPress install with 200 identical posts, behind four nginx server blocks:</p>
<table>
<thead>
<tr>
<th></th>
<th>Port</th>
<th>What it is</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>A</strong></td>
<td>8081</td>
<td>WordPress, no page cache</td>
</tr>
<tr>
<td><strong>B</strong></td>
<td>8082</td>
<td>The same WordPress + nginx <code>fastcgi_cache</code></td>
</tr>
<tr>
<td><strong>C</strong></td>
<td>8083</td>
<td>A static mirror of A, made with <code>wget</code></td>
</tr>
<tr>
<td><strong>A′</strong></td>
<td>8084</td>
<td>A second door to A, identical config</td>
</tr>
</tbody>
</table>
<p>For WordPress vs static HTML to mean anything, both sides need the same HTML — so the static side is a <code>wget</code> mirror of the WordPress site, not a separately-built Hugo one. That&#8217;s deliberate: it makes the HTML <strong>byte-identical</strong>.</p>
<p>A, B and A′ returned the same md5. C differed by 165 bytes — <code>wget</code> rewriting absolute URLs to relative ones, and nothing else.</p>
<p>So any speed difference belongs to the serving path. Not the theme, not the content, not the page size.</p>
<h3>The control that makes the rest trustworthy</h3>
<p><strong>A′ is the important one, and no comparison I read had anything like it.</strong></p>
<p>It&#8217;s the same stack as A, same PHP-FPM pool, identical config. It <em>is</em> A. If my measurements are any good the two must come out the same — and if they don&#8217;t, my machine is too noisy and every other number here is garbage.</p>
<p>I ran it first, 160 rounds, alternating which went first:</p>
<pre><code class="language-text">A  median TTFB   33.6958 ms
A' median TTFB   33.6912 ms
ratio            0.9999   (drift 0.01%)
gap              0.0047 ms   against an IQR of 0.75 ms
</code></pre>
<p>The two identical stacks landed 0.01% apart — under one percent of the ordinary jitter. That&#8217;s the receipt that lets me report everything else.</p>
<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> This is the check to demand from anyone showing you a benchmark. If they can&#8217;t tell two identical things apart, they can&#8217;t tell two different things apart either.</p>
<h2>WordPress vs static site: is static actually faster?</h2>
<p>Every static site vs WordPress speed claim you have read starts here, and this part is true: enormously faster — against WordPress with no caching.</p>
<p>I hit each stack 185 times, rotating the order every round so a busy moment on my machine couldn&#8217;t land on one stack and stay there.</p>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/a2-ttfb-by-stack.webp" alt="WordPress vs static site time to first byte, measured across three stacks on one machine" /></p>
<table>
<thead>
<tr>
<th>Stack</th>
<th>Median TTFB</th>
<th>25th–75th</th>
<th>vs uncached</th>
</tr>
</thead>
<tbody>
<tr>
<td>WordPress, uncached</td>
<td>33.70 ms</td>
<td>33.44 – 33.98</td>
<td>1×</td>
</tr>
<tr>
<td>WordPress, cached</td>
<td>0.432 ms</td>
<td>0.384 – 0.471</td>
<td><strong>78× faster</strong></td>
</tr>
<tr>
<td>Static files</td>
<td>0.350 ms</td>
<td>0.305 – 0.400</td>
<td><strong>96× faster</strong></td>
</tr>
</tbody>
</table>
<p>Ninety-six times. That&#8217;s the number that sells the switch, and it&#8217;s real. It&#8217;s also the wrong comparison.</p>
<h2>What happens when WordPress is properly cached</h2>
<p>Look at the middle row again. <strong>Cached WordPress is 78× faster than uncached WordPress</strong> — and it&#8217;s the <em>same WordPress</em>. Same plugins, same theme, same database.</p>
<p>The only change is nginx keeping the finished HTML and handing it out instead of waking PHP.</p>
<p>Which puts static at <strong>1.23× faster than cached WordPress</strong>. Not 96×. Not 10×.</p>
<p>In absolute terms that&#8217;s <strong>0.082 milliseconds</strong>.</p>
<p>What does 0.082ms mean in practice? It is three orders of magnitude smaller than the time a packet takes to reach your server and come back. It vanishes into the noise of the internet before the page starts rendering.</p>
<p>Every guide comparing static to WordPress compares it to the <em>uncached</em> configuration. Nobody runs an uncached WordPress site on purpose.</p>
<h3>Does it hold up when people arrive at once?</h3>
<p>One visitor at a time is the easy case. I pushed 1, 10 and 50 concurrent connections at each stack, three runs each.</p>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/a3-throughput-vs-concurrency.webp" alt="Requests per second for WordPress and a static site as concurrent visitors increase" /></p>
<table>
<thead>
<tr>
<th>Concurrency</th>
<th>WP uncached</th>
<th>WP cached</th>
<th>Static</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>28 rps</td>
<td>6,323 rps</td>
<td>9,551 rps</td>
</tr>
<tr>
<td>10</td>
<td>132 rps</td>
<td>31,697 rps</td>
<td>35,816 rps</td>
</tr>
<tr>
<td>50</td>
<td>129 rps</td>
<td>40,826 rps</td>
<td>47,341 rps</td>
</tr>
</tbody>
</table>
<p>Uncached WordPress hits a wall at about <strong>130 requests per second</strong> and stays there — PHP-FPM&#8217;s default of five worker processes. Five requests at a time, no matter how many people show up.</p>
<p>Cached WordPress and static both keep climbing, and stay within about 16% of each other all the way up. Zero failed responses anywhere, on any stack.</p>
<p>The honest headline isn&#8217;t &#8220;static is faster than WordPress&#8221;. It&#8217;s that <strong>caching is faster than not caching, by 78×</strong> — and static adds a rounding error on top.</p>
<h2>The comparison table</h2>
<p>Everything I measured, in one place:</p>
<table>
<thead>
<tr>
<th></th>
<th>WordPress (cached)</th>
<th>Static</th>
</tr>
</thead>
<tbody>
<tr>
<td>Median TTFB</td>
<td>0.432 ms</td>
<td>0.350 ms</td>
</tr>
<tr>
<td>Requests/sec at 50 concurrent</td>
<td>40,826</td>
<td>47,341</td>
</tr>
<tr>
<td>Page HTML</td>
<td>75,773 bytes</td>
<td>75,608 bytes</td>
</tr>
<tr>
<td>Assets that actually load</td>
<td>14 of 16</td>
<td><strong>8 of 16</strong></td>
</tr>
<tr>
<td>Memory under load</td>
<td>463.9 MiB</td>
<td><strong>38.6 MiB</strong></td>
</tr>
<tr>
<td>Disk</td>
<td>242.7 MiB</td>
<td><strong>40.6 MiB</strong></td>
</tr>
<tr>
<td>Smallest DigitalOcean droplet that fits</td>
<td>$6/mo (1 GB)</td>
<td>$4/mo (512 MB)</td>
</tr>
<tr>
<td>Search, forms, comments</td>
<td>work</td>
<td><strong>broken</strong></td>
</tr>
</tbody>
</table>
<p>Two rows deserve a second look, because they&#8217;re the ones that actually decide this.</p>
<p><strong>Memory is where static wins properly.</strong> WordPress needs MariaDB, PHP-FPM and nginx — 463.9 MiB with traffic on it. Static needs nginx alone: 38.6 MiB.</p>
<p>That&#8217;s <strong>12× less memory and 6× less disk</strong>, and unlike the speed difference it isn&#8217;t a rounding error. It&#8217;s the gap between DigitalOcean&#8217;s <a href="https://www.digitalocean.com/pricing/droplets">$4/month 512 MB droplet and the $6/month 1 GB one</a> — a real, if modest, $24 a year.</p>
<p><strong>And that &#8220;8 of 16&#8221; row is not static being lighter.</strong> I&#8217;ll get to it.</p>
<h2>Does publishing get slower as your blog grows?</h2>
<p>This is the static site generator vs WordPress question I actually wanted answered, and the one nobody measures. The only person I found writing about it was a developer in 2021 whose workflow fell apart as his archive grew — a good post, with no numbers in it.</p>
<p>So I measured the cost of publishing <em>one more post</em> at three archive sizes.</p>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/a4-publish-cost-vs-archive-size.webp" alt="Time to publish one more post on WordPress versus rebuilding a static site, at 10, 100 and 1000 posts" /></p>
<table>
<thead>
<tr>
<th>Archive size</th>
<th>Static (full rebuild)</th>
<th>WordPress (publish one post)</th>
</tr>
</thead>
<tbody>
<tr>
<td>10 posts</td>
<td>40 ms</td>
<td>35 ms</td>
</tr>
<tr>
<td>100 posts</td>
<td>61 ms</td>
<td>35 ms</td>
</tr>
<tr>
<td>1,000 posts</td>
<td><strong>296 ms</strong></td>
<td><strong>33 ms</strong></td>
</tr>
</tbody>
</table>
<p>Both camps are a little wrong.</p>
<p><strong>Static defenders are wrong that build time is nothing.</strong> Multiply the archive by 100 and the rebuild takes 7.4× longer. That curve is real and keeps going.</p>
<p><strong>The 2021 post is wrong that it falls apart.</strong> At a thousand posts, a full rebuild takes 296 milliseconds. A third of a second. If you publish weekly, you will not notice this in your lifetime.</p>
<p>WordPress stays flat — 33 ms at a thousand posts, statistically identical to 35 ms at ten — because publishing is one database insert regardless of how much you&#8217;ve already written.</p>
<p>So the authoring-loop objection is directionally true and practically irrelevant at blog scale. Revisit it at 50,000 pages; under a few thousand it&#8217;s a non-issue.</p>
<h2>What actually breaks when you go static</h2>
<p>Here&#8217;s where the piece changed my mind.</p>
<p>I put the three things a normal blog has onto the WordPress site — a contact form, site search, comments — exported it the way someone without a paid plugin would, with <code>wget</code>, then tried every feature against the export.</p>
<p><strong>Five of six were broken.</strong></p>
<table>
<thead>
<tr>
<th>Feature</th>
<th>WordPress</th>
<th>Static export</th>
</tr>
</thead>
<tbody>
<tr>
<td>Site search</td>
<td>works</td>
<td><strong>returns the homepage</strong></td>
</tr>
<tr>
<td>Contact form submit</td>
<td>works</td>
<td>404</td>
</tr>
<tr>
<td>Posting a comment</td>
<td>works</td>
<td>404</td>
</tr>
<tr>
<td><code>comment-reply.js</code></td>
<td>loads</td>
<td>404</td>
</tr>
<tr>
<td>RSS feed</td>
<td>works</td>
<td>works, but frozen at export time</td>
</tr>
<tr>
<td>Comment form on the page</td>
<td>works</td>
<td><strong>still renders, posts nowhere</strong></td>
</tr>
</tbody>
</table>
<p>Search made me sit up. On the export, <code>/?s=fixture</code> returns <strong>HTTP 200</strong> — not a 404, a completely normal successful response. A static server has no idea what <code>?s=</code> means, so it ignores it and hands back the homepage.</p>
<p>My first version of this test checked status codes only, and told me <em>&#8220;site search: still works.&#8221;</em> It does not. I had to compare the page bodies to catch it — and if I&#8217;d trusted the status code, I&#8217;d have published the opposite of the truth.</p>
<p>And the contact page is worse, because it looks completely fine:</p>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/a5-static-contact-form-dead-scaled.webp" alt="WordPress vs static site: the exported static contact page still showing a working-looking contact form" /></p>
<p>That&#8217;s the exported site. Name, email, subject, message, Submit — and a visitor who fills it in, hits the button, and 404s into nothing.</p>
<p><strong>You don&#8217;t get an error report, because nothing looks broken.</strong> You just stop hearing from people.</p>
<p>This also explains the &#8220;8 of 16 assets&#8221; row above. The static page isn&#8217;t 90KB lighter because it&#8217;s leaner — it&#8217;s lighter because six files it asks for aren&#8217;t there, including the block-navigation CSS and JavaScript.</p>
<h2>Common Mistakes</h2>
<p><strong>Benchmarking WordPress with caching off.</strong> This is the big one. Every &#8220;static is 10× faster&#8221; claim I could find compares against a configuration nobody deploys. Turn on page caching and you recover 78× of the 96×.</p>
<p><strong>Trusting a static site vs WordPress speed table with no method attached.</strong> If it won&#8217;t tell you the hardware, the tool, the page and the number of runs — and shows no spread around its figures — it&#8217;s a guess with decimal points.</p>
<p><strong>Costing the hosting but not the workflow.</strong> The $2/month you save is real. So is the afternoon spent rebuilding your contact form on a third-party service, and every future post going through a build step instead of a Publish button.</p>
<p><strong>Assuming an export keeps things working.</strong> It doesn&#8217;t, and it fails quietly. Go static <em>deliberately</em> — pick a forms service, pick a search service (or drop search), pick a comments host. Don&#8217;t export a dynamic site and hope.</p>
<h2>What I&#8217;m not claiming</h2>
<p>My lab was a container on a home Optiplex that also runs my other work. That is not clean benchmark hardware and I won&#8217;t pretend otherwise.</p>
<p>So I claim the <strong>ratios between stacks</strong>, not the absolute milliseconds. Every stack was measured in the same rounds, in rotating order, minutes apart, and the null control resolved identical stacks to 0.01%.</p>
<p>Under those conditions &#8220;static is 1.23× cached WordPress&#8221; is solid. &#8220;Static serves in 0.35ms&#8221; is true of my box and nothing else.</p>
<p>I&#8217;m also not claiming anything about <strong>SEO</strong> — everyone asserts static ranks better, and I can&#8217;t test it in an afternoon. I didn&#8217;t test managed WordPress hosting or Netlify&#8217;s free tier either. Different question, different piece.</p>
<h2>FAQ</h2>
<p><strong>Is a static site faster than WordPress?</strong><br />
On WordPress vs static HTML, against uncached WordPress, yes — 96× on my measurements. Against WordPress with nginx page caching, 1.23×, which is 0.08 milliseconds. On a real connection that difference is invisible.</p>
<p><strong>Is a static site worth it for a blog I update weekly?</strong><br />
For speed alone, no — caching gets you within a rounding error. For a lower bill and less to maintain, maybe: 12× less memory and no database to patch.</p>
<p><strong>Will my contact form work after converting to static?</strong><br />
No. Mine returned 404 while still displaying a perfectly normal form. If you go static you need a forms service, and you need to know that before you migrate, not after.</p>
<p><strong>Can I keep WordPress and get static speed?</strong><br />
Largely, yes — that&#8217;s the finding. Full-page caching took the same WordPress install from 33.70 ms to 0.432 ms without changing a single plugin or theme file. It&#8217;s the cheapest performance work available to you.</p>
<p><strong>How much does each one actually cost to host?</strong><br />
Static fits DigitalOcean&#8217;s $4/month 512 MB droplet; WordPress needs the $6/month 1 GB tier at minimum. Around $24 a year, before you count your own time.</p>
<p><strong>What about search on a static site?</strong><br />
Site search stops working and does it silently — HTTP 200, homepage returned. You&#8217;d need a client-side index or a hosted search service.</p>
<h2>So which should you build?</h2>
<p>Here&#8217;s the rule I&#8217;d give a friend, and it isn&#8217;t the one I expected to write.</p>
<p>If your site has forms, comments, search, or anything a visitor submits — <strong>stay on WordPress and turn on full-page caching</strong>. That one change bought 78× on my measurements.</p>
<p>You keep everything that works, and the remaining gap is a fraction of a millisecond nobody will perceive.</p>
<p><strong>Reach for a static site generator vs WordPress only when your site genuinely has nothing dynamic in it</strong> — a portfolio, documentation, a landing page, an archive that only you update. Then you get real wins: 12× less memory, a cheaper box, no database to keep patched, and nothing to break at 3am.</p>
<p>What should not decide it is a speed table with no method behind it. The 96× is real and it&#8217;s measuring the wrong thing.</p>
<p>If you take one thing from this: <strong>go and turn caching on</strong>. It&#8217;s free, it takes an afternoon, and it&#8217;s most of the benefit people switch platforms for. You might try it before you rebuild anything.</p>
<p>Every script and raw measurement behind this post is published — the null control, the timing harness, the export probes, all of it.</p>
<p>Run them on your own box and tell me if you get something different. I&#8217;d genuinely like to know. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><em>Related: <a href="https://ceeveeglobal.com/how-i-connected-wordpress-to-claude-ai-with-an-mcp-server/">How I Connected WordPress to Claude AI With an MCP Server</a></em></p>
<p>The post <a href="https://ceeveeglobal.com/wordpress-vs-static-site/">WordPress vs Static Site: I Measured Both, Here&#8217;s the Truth</a> appeared first on <a href="https://ceeveeglobal.com">The Beginner’s Playbook for Fixing WordPress Errors</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceeveeglobal.com/wordpress-vs-static-site/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
