When you to make a simple website, what's the first thing you reach for?

Wordpress? Rails? Django? Straight up HTML files? Before you know it you're setting up a database, dealing with security updates, paying for expensive hosting, and doing all sorts of stuff that isn't making your website great.

Instead of Wordpress and things like it, you should consider static sites.

Static Sites

Static sites are exactly what they sound like. They're sites that are displayed to the user exactly as they're stored on the server.

I know what you're thinking -- Um... no thanks. I'm not about to spend days editing .html files to make a simple website. No, not at all. I'm suggesting using a static site generator, such as Jekyll or Middleman. These generators allow you to quickly and easily produce a content website, blog, or landing page.

Performance

I talked to a developer once who was the admin for his company's Wordpress site. On the main page they displayed information for several different divisions of their business. He said that they'd had some trouble where the database call to fetch information about the divisions made the page load too slowly. They'd ended up doing all sorts of stuff to work around the fact that their landing page needed something like twenty database calls. Even worse was their employee directory -- they had a page that needed something like five hundred database calls, one for each employee. They hadn't found a way around that yet.

Sure, there are ways to make that work. I'm sure a more experienced developer could make it very blazing fast.

But... why even deal with database calls for that at all? Nowhere in the case described above is that necessary. In fact, it's usually not. If you could conceivably just type the data out every time you need it, then the database call is just convenience. I'll get to that more later.

In the meantime, the very nature of static sites means that they are blazingly fast. Instead of making a database call or running a bunch of JavaScript to lay the page out, it's just there when the page loads. Speaking of, it loads ridiculously quickly! All the server has to do is point the browser to the right file.

Static sites also lend themselves extremely well to caching, which makes the already fast site even faster.

Ease of Configuration

The fun part of making a website is, you know, the actual website. It's tweaking the content a little here and there, adding a fancy new header, and writing new blog posts. Seeing that hosting charge on your credit card every month is, well, way less fun.

In fact, most of the configuration kind of sucks. Even if it doesn't take forever, and even if you know what you're doing, it's not something that ever really gets your blood going.

Static sites step right around most of the boring tidbits. In my experience with Jekyll and Middleman at least, the hardest part of the configuration was setting up the CNAME. After that, it's literally just updating a git repository. There's no database, no bothering with setting up users, and there's no dealing with security updates.

Because GitHub (and GitLab, for that matter) is so awesome, I've also never paid anything for hosting. Even if I were hosting it myself, it's so easy to host that it's ridiculously cheap. Look over Jekyll's deploment documentation to see just how easy and cheap it can be.

Source Control

Now, I'm not a Wordpress developer, but...

I am a huge proponent of keeping everything you possibly can in source control. I'm sure it's possible to keep the code of a dynamic site in source control, but you can't keep the content in that source control. You end up making database backups of the content.

With a static site, you can just git log and see everything that's ever happened to the site, including your content! You've got all of the wonderful power of source control for everything about your site, which is a huge plus in my book.

'Dynamic' Bits

You've probably heard of static sites before and thought that it'd be great, except for the fact that you've got lots of content and don't want to have to write it all out in 1,000 places across the site.

The company Wordpress site mentioned above is actually a pretty good example. Let's say you've got six divisions and each division has a bunch of data about it that you need to keep around. You want to display their name and blurb on the landing page and then you need their name, blurb, and contact information on a page specifically for that division. Updating their blurb, which is in at least two places now, would suck, right?

Nope!

Middleman has data files that make it super easy to have data outside of your content that you can then just reference in your site. Jekyll has the same idea. Using this concept you can accomplish a ton of things that typically you'd need a whole database to make happen.

Summary

In summary, using static sites makes your life easier. Your users will never get an ugly database error page. You'll have everything in source control. Deployments are as easy as a git push.

Oh yeah, and it's fast.

So the next time you get ready to make a website, spend some time thinking about what you're really trying to accomplish before discounting static sites.