In the early days of the web, everything was coded by hand. HTML, and later CSS, were written by developers and uploaded to servers. There were no content management systems. In some ways, that made things simpler and it certainly made things faster from the perspective of users. Static sites without databases and complex server-side code to execute are blazingly fast to serve and have very low resource requirements.
However, anyone who was involved in online publishing in the early days of the web knows that it wasn’t a land of milk and honey. In the world of WordPress and other content management systems, writers take it for granted that they can write and publish their content within an interface designed for that purpose and without ever having to meet a developer. Early static sites frequently required developer intervention for even the most minor of tasks — either that or content creators had to go some way towards becoming developers themselves.
But the modern content management isn’t a solution without drawbacks. WordPress, ExpressionEngine, and friends are dynamic site generators, every page served without caching requires multiple database calls and code executions. Complex server-side operations lead to slower sites, particularly for those with high traffic.
As with many things, online technology trends are at least partially cyclical. In recent years it has become popular, at least among the more “geeky”, to return to static sites, using static site generators to build blogs and websites. It’s not quite the same as the old days, but nor are static site generators full fledged content management systems. They use newer technologies like Markdown and templating languages to simplify the process of deploying a static site. Every time content is published or a change is made to a page, the whole site is regenerated and uploaded to the server. Instead of generating the site as pages are requested, static site generators build the site once and serve the same version to everyone. The result is sites that are much faster than their dynamic equivalents.
There are hundreds of static site generators, but leading examples include Jekyll, Pelican, Hyde, and Harp, each of which takes a different approach or is coded in a different language — static site generators are fairly easy to write, so many developers take a swing at building their own.
Should You Use A Static Site Generator?
Static site generators are easier than coding a site by hand, but they have a much steeper learning curve than a content management system like WordPress. If you’d like to quickly deploy an easy-to-manage site and have no experience with HTML, CSS, or Markdown and aren’t eager learn, stick with content management systems. If you’re technically adept, then static site generators can be a great way to gain control over and insight into the nuts and bolts of your website. Plus the resulting site will be very fast.
If you’re interested in giving static site generators a try, I’d suggest starting with Jekyll. It’s a mature Ruby-based platform with a number of fairly high-profile deployments. Jekyll is also blessed with some great tutorials, including the excellent Jekyll By Example. You’ll also want to familiarize yourself with Markdown — which I’d urge all writers and content creators to do anyway.This is a great place to start.