Rebuilding Showcase Sites and My Blog: Leaving halo and wordpress for a Surprisingly Useful Static–Dynamic Hybrid
This post was translated from Chinese by AI. If anything reads oddly, the Chinese original is authoritative. 中文原文
One migration was from wordprss, the other from halo. I wrote two implementations for different use cases, but the core logic is similar.
Reasons for Migrating
- wordpress performance can be optimized, but extending it isn't very convenient. It doesn't offer the same automated push and deploy workflow as a private repository.
- halo's java memory usage is high, and they've also started working on a storefront. On top of that, this strange change broke my article pages for weeks (some articles had previously been migrated from typecho to halo without changing their URLs):
升级2.22.x后, slug为四位数, 比如 1207时, 访问文章, 变成 文章归档 页面 - Easier custom extensions: multilingual support, automatic ai translation, ai-powered seo optimization, and mcp.
Why Not Fully Static
- I need MCP so an agent can publish posts.
- I need to integrate ai models for article translation, SEO descriptions, and automated ai task queues.
- I need to update content dynamically, with built-in indexnow support.
- Dynamic view counts and similar features.
- Convenience.
Why Not Fully Dynamic
- Speed.
- Easier for ai to crawl and read.
- No need.
Approach
- A go backend.
- A dynamic admin interface, accessible through a separate domain or a URL path.
When content changes, go runs next build to generate static pages, which can then be served in either of the following ways.
-
Run a separate container sharing the frontend volume. If backend APIs are needed, reverse-proxy a few dynamic endpoints to the backend build container.
-
Use a single container, with go-web-utils/nextstatic handling routing for the next static files.
The results are pretty good.
My blog: https://woodchen.ink — feel free to take a look.
Comments 0