<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Static Site | 空垠尘</title><link>/en/tags/static-site/</link><description>Minimalist Static · Boundless Edge</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>Dukang Xu</managingEditor><webMaster>Dukang Xu</webMaster><copyright>© 2026 空垠尘</copyright><lastBuildDate>Sat, 05 Sep 2026 10:00:00 +0800</lastBuildDate><atom:link href="/en/tags/static-site/index.xml" rel="self" type="application/rss+xml"/><item><title>Why Hugo? Modern Blog Frameworks Compared</title><link>/en/why-hugo/</link><pubDate>Sat, 05 Sep 2026 10:00:00 +0800</pubDate><author>Dukang Xu</author><guid isPermaLink="true">/en/why-hugo/</guid><description>A deep architectural analysis of the four generations of personal blogging frameworks, comparing WordPress, Hexo, Astro, and Hugo across compile speed, operational overhead, and content decoupling.</description><content:encoded><![CDATA[<h2 id="introduction-the-technical-evolution-of-personal-blogs">Introduction: The Technical Evolution of Personal Blogs</h2>
<p>Building a personal blog is a rite of passage for many software engineers.</p>
<p>Over the past two decades, blogging architectures have evolved dramatically—from <strong>Dynamic Content Management Systems (CMS)</strong> to <strong>Static Site Generators (SSG)</strong>, and now to <strong>Serverless Edge Computing</strong>:</p>
<ol>
<li><strong>Generation 1: Dynamic Database-Driven (2003–2013)</strong>: Exemplified by WordPress and Typecho on the LAMP stack, querying relational databases and assembling HTML on every request;</li>
<li><strong>Generation 2: Static Generation &amp; Git Hosting (2014–2019)</strong>: Exemplified by Jekyll and Hexo, compiling local Markdown directly into static HTML deployed to platforms like GitHub Pages;</li>
<li><strong>Generation 3: Modern Componentized Frameworks (2020–present)</strong>: Exemplified by Astro and Next.js, featuring Islands Architecture to embed interactive React/Vue components into Markdown;</li>
<li><strong>Compiled High-Performance Static Engines (Hugo)</strong>: Built natively in Go to push compilation speed and resource efficiency to their physical limits.</li>
</ol>
<p>When creating this blog, our core criteria were clear: <strong>instant compilation, zero server hosting costs, zero maintenance, and complete content decoupling</strong>. This article explores the architectural trade-offs across these frameworks and why we chose Hugo.</p>
<hr>
<h2 id="1-deep-dive-into-four-blogging-paradigms">1. Deep Dive into Four Blogging Paradigms</h2>
<h3 id="11-traditional-dynamic-cms-wordpress-halo">1.1 Traditional Dynamic CMS (WordPress, Halo)</h3>
<pre tabindex="0"><code class="language-mermaid" data-lang="mermaid">sequenceDiagram
    autonumber
    actor User as Visitor (User)
    participant Web as Web Proxy (Nginx)
    participant App as App Server (PHP / Java)
    participant DB as Database (MySQL)

    User-&gt;&gt;Web: 1. Send HTTP Page Request
    Web-&gt;&gt;App: 2. Reverse Proxy Request
    App-&gt;&gt;DB: 3. Query Relational Database
    DB--&gt;&gt;App: 4. Return SQL Records
    App--&gt;&gt;Web: 5. Dynamic SSR Template Assembly
    Web--&gt;&gt;User: 6. Output Rendered HTML
</code></pre><ul>
<li><strong>Architecture</strong>: Articles, comments, and settings reside in a relational database. Every incoming request executes server-side SQL queries and template rendering before returning HTML.</li>
<li><strong>Key Advantages</strong>:
<ul>
<li>Comprehensive feature set with mature rich-text and block editors;</li>
<li>Vast ecosystem of plugins and themes for e-commerce, memberships, and forums.</li>
</ul>
</li>
<li><strong>Pain Points</strong>:
<ul>
<li><strong>Ongoing VPS Hosting Costs</strong>: Requires dedicated cloud virtual machines running 24/7;</li>
<li><strong>Concurrency &amp; I/O Bottlenecks</strong>: Vulnerable to traffic spikes, connection pool exhaustion, and out-of-memory crashes;</li>
<li><strong>Security &amp; Maintenance Overhead</strong>: Persistent risks of SQL injection, XSS vulnerabilities, and plugin exploits requiring regular patching.</li>
</ul>
</li>
</ul>
<hr>
<h2 id="2-comprehensive-comparison-matrix">2. Comprehensive Comparison Matrix</h2>
<table>
	<thead>
			<tr>
					<th style="text-align: left">Evaluation Criterion</th>
					<th style="text-align: left">Dynamic CMS (WordPress)</th>
					<th style="text-align: left">Node.js SSG (Hexo)</th>
					<th style="text-align: left">Islands SSG (Astro)</th>
					<th style="text-align: left">Compiled Static Engine (Hugo)</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left"><strong>Core Language</strong></td>
					<td style="text-align: left">PHP / Java</td>
					<td style="text-align: left">JavaScript (Node.js)</td>
					<td style="text-align: left">TypeScript / JS</td>
					<td style="text-align: left"><strong>Native Go Binary</strong></td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>100-Article Build Time</strong></td>
					<td style="text-align: left">Dynamic SSR (100–300ms/req)</td>
					<td style="text-align: left">3–10s</td>
					<td style="text-align: left">1–3s</td>
					<td style="text-align: left"><strong>10–30ms (Instant)</strong></td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Runtime Dependencies</strong></td>
					<td style="text-align: left">PHP/MySQL/Web Server</td>
					<td style="text-align: left">Node.js + npm modules</td>
					<td style="text-align: left">Node.js/Vite Toolchain</td>
					<td style="text-align: left"><strong>Zero Dependencies</strong></td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Server Cost</strong></td>
					<td style="text-align: left">Continuous VM rental</td>
					<td style="text-align: left">Zero (Static hosting)</td>
					<td style="text-align: left">Zero (Static hosting)</td>
					<td style="text-align: left"><strong>Zero (Static hosting)</strong></td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Security Surface</strong></td>
					<td style="text-align: left">Vulnerable to SQLi / XSS</td>
					<td style="text-align: left"><strong>Zero Attack Surface</strong></td>
					<td style="text-align: left"><strong>Zero Attack Surface</strong></td>
					<td style="text-align: left"><strong>Zero Attack Surface</strong></td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Global CDN Cache Rate</strong></td>
					<td style="text-align: left">Requires reverse proxies</td>
					<td style="text-align: left">100% Static Cache Hit</td>
					<td style="text-align: left">100% Static Cache Hit</td>
					<td style="text-align: left"><strong>100% Static Cache Hit</strong></td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Migration Friction</strong></td>
					<td style="text-align: left">High (Database lock-in)</td>
					<td style="text-align: left">Low (Standard Markdown)</td>
					<td style="text-align: left">Medium (Component syntax)</td>
					<td style="text-align: left"><strong>Near Zero (Pure Markdown)</strong></td>
			</tr>
	</tbody>
</table>
<hr>
<h2 id="3-our-architecture-and-production-implementation">3. Our Architecture and Production Implementation</h2>
<p>Guided by these trade-offs, we designed our platform around three pillars: <strong>Hugo as the compilation core, Bear Blog&rsquo;s charcoal-slate aesthetic for visual discipline, and Cloudflare Pages for global edge distribution</strong>.</p>
<h3 id="31-content-decoupling-the-pure-content-store">3.1 Content Decoupling: The Pure Content Store</h3>
<p>We enforce strict architectural boundaries:</p>
<ul>
<li>All article sources reside in <code>posts/</code>, adhering strictly to standard YAML Frontmatter and vanilla Markdown;</li>
<li>No proprietary tags or engine-specific hooks are permitted in article markdown.</li>
</ul>
<p>This ensures our written assets remain completely portable and can migrate to any future engine with zero friction.</p>
<h3 id="32-sub-second-edge-performance">3.2 Sub-second Edge Performance</h3>
<ul>
<li><strong>Zero-Bloat Frontend</strong>: Apart from minimal native JavaScript for ScrollSpy TOC tracking, dark mode toggling, and code block copying, the site ships zero heavy UI framework bundles;</li>
<li><strong>Instant Global Delivery</strong>: Built HTML artifacts distribute across Cloudflare&rsquo;s Anycast edge network, achieving sub-100ms first-contentful-paint worldwide and consistent <strong>100/100 Lighthouse scores</strong>.</li>
</ul>
<hr>
<h2 id="4-conclusion-the-less-is-more-engineering-philosophy">4. Conclusion: The &ldquo;Less is More&rdquo; Engineering Philosophy</h2>
<p>Software engineering history repeatedly demonstrates that <strong>excessive complexity breeds fragility</strong>.</p>
<p>For a technical blog dedicated to knowledge retention and architectural clarity, flashy widgets quickly fade. What endures is rigorous thinking, focused reading typography, and a rock-solid infrastructure.</p>
<p>Choosing Hugo and a pure static edge architecture means returning to first principles: <strong>using the leanest tools to solve pure problems, and dedicating all energy to crafting high-value content</strong>.</p>
]]></content:encoded><category>Architecture</category><category>Hugo</category><category>Static Site</category><category>Tech Stack</category><category>Performance</category></item></channel></rss>