I benchmarked them myself and using https://www.webpagetest.org/ in numerous locales.
Netlify has the edge as their publishing model is slick. They know there has been an update and can trigger the nodes automatically. My only complaint? They have a soft bandwidth limit - I wish I could pay to lift it. I know they won't enforce - it's there to stop abuse. But they can take my $. For the apex (sans "www") domain, you need to let them manage DNS, which is backended by NS1.
Firebase hosting is excellent. Really top class. But I found it to be a little slower on the deploy side. If you think you may use some kind of backend functionality, this is a smart option. Even with an A Record on the DNS they were fast. I think Google's Anycast network must be top notch (no surprise, really).
Github+Cloudflare was pretty good too. But the invalidation model was something you needed to work with. Plus every now and then I'd hit a cold node (I assume) and it was slower. Overall it was great, but just a nose behind and not as easy to use. One area where they really were consistently ahead was DNS.
So lots of good options. Reality is they are so close you're best going for the option you're most comfortable with. For vanilla I love Netlify. For anything JavaScript-y Firebase is great.
Edit: I was curious, so I checked on Netlify. I think they're hosted on Google Cloud... Which would make sense.
After you've set it up once, subsequent projects are effortless.
I've also experimented with injecting CircleCI into the mix to do custom build steps outside of what's supported by GitHub Pages.
- [0] https://gohugo.io/
- [1] http://themes.gohugo.io/
- [2] https://pages.github.com/
[0] https://aws.amazon.com/certificate-manager/faqs/#billing
I have my blog [0] setup so that all I need to do in order to publish a new article is add a markdown file to my GitHub pages source repo. Travis then builds the html and pushes it back to the GitHub pages repo.
You can easily add files and edit markdown on the GitHub web interface so I essentially use GitHub as a CRM. If you're interested, have a look at my GitHub Pages repo [1] and Travis CI build config [2].
[0] http://www.samlewis.me [1] https://github.com/samvrlewis/samvrlewis.github.io/tree/webs... [2] https://github.com/samvrlewis/samvrlewis.github.io/blob/webs...
Why I like it:
-CLI makes it easy to use.
-Deploying to the internet is as easy as "firebase deploy"
-Comes with HTTPS for free and with zero config
-Automatmagically uses Firebase's CDN
-Can serve with your custom domain name
-Low cost (for my needs/traffic levels)
-(Mostly)Straightforward documentation/references
Pain point(s):
-Slightly fragmented documentation. This was only one instance, so I might be blowing it out of proportion. I wanted to have Clean URLs in my website, there was no mention of that capability in the Firebase docs -> "Customize hosting behavior".
But the only instance I found this feature was from a random Firebase blog post from 2 years ago.
https://firebase.googleblog.com/2015/12/a-host-of improvements_61.html
-I can't view the contents of what I'm hosting from the web based (At least I tried to, and can't figure it out.)-Deploys can be slow(30 secs -2 min), but honestly I should setup a CD pipeline and stop staring at it while it's deploying.
I originally was going to use Google Cloud Storage, but they don't support HTTPS out of the box.
Now I'm using Uberspace, and they are excellent, as well.
I quite like that it comes with command line util so it's easy to sync up changes with one command.
It's also dirt cheap if you have modest traffic. I doubt I'll spend anything significant. Maybe a few cents?
As an aside: I am changing my opinion on static site generators.
They make things harder because you need to learn the generator syntax. The programming constructs in Hugo for example are woefully inadequate for anything serious. For example you can't parse a date as far as I can tell.
My solution for the next static project is to use the web framework I am used to (in my case ASP.NET MVC) and knock it up in that. I can use output caching and read from resource files to get the static site performance and not deal with a DB.
When I need to customize I will save a lot of time and frustration as I can just do what I need to do from experience.
Look into Wyam (https://wyam.io/) a bit. You might find it's extensibility to write custom modules similar to what you are trying to accomplish.
Netlify supports running a build script automatically whenever you push to one of our supported Git providers (we also have a CLI tool for those who prefer to do that manually). This includes creating deploy previews for branches other than your main deploy branch (such as PRs).
This is actually how the project I work on, Netlify CMS[0] works - the CMS is a completely open source, front-end application that pushes to GitHub using their REST API. If you’re using Netlify‘s continuous deployment, GitHub’s webhook system notifies Netlify of the push and Netlify’s buildbot builds and deploys the update to your site automatically.
I might try Netlify some day if it's as easy as GitLab + has custom HTTPS domains for free.
We do indeed offer free HTTPS and custom domain support (as well as the two together) on our free plan. I haven’t used GitLab Pages myself, so I couldn’t compare further off the top of my head.
But.. If for something real simple (if you are ok with an ugly URL), I have tried Google drive (with a public folder) and Blogspot with some quick and dirty JS in the mix.
nginx on a $5/mo virtual private server (vultr, linode, digitalocean)
nginx is incredible at serving static content. Also a CDN is often overkill for the majority of websites. If you have never setup a web server before, its worth taking a couple hours (or as much time as you need) to learn. It's a very empowering experience!
for comments I'm building a service called Remarkbox (https://www.remarkbox.com) - its live on about 15 sites right now and growing.
Mostly for the simple SSL setup.
Switched to Netlify for a couple of projects and loving it.