网络托管的区别(选择顺畅的路径)

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您的旅程各个阶段提供云产品。 立即开始使用 200 美元的免费信用额度!

我们的一位读者查看了 “帮助初学者了解如何使网站上线”,并对托管提供商提出了几个后续问题。 以下是他们所问的:

托管提供商之间有什么区别? 例如,GoDaddy 和 Hostgator 这样的“传统”网络托管提供商与 Heroku、Digital Ocean、AWS 和 Firebase 等其他托管提供商有什么区别?

我什么时候应该使用哪一种?

他们希望得到详细的见解,所以我打算满足他们的要求!


选择计划

您首先提到了 GoDaddy,所以让我们看看 GoDaddy 的托管产品,因为我现在正在输入。

说实话,我已经感到困惑了。(抱歉,我保证在接下来的讨论中我会更乐于助人。)为什么 WordPress 托管比 Web 托管计划贵 1 美元? 如果你购买了 5.99 美元的 Web 托管计划,你是否被禁止在它上面安装 WordPress? 还是说它只是方便,如果你选择了 WordPress 托管,它会预先安装和配置? WooCommerce 只是 WordPress 的一个插件,所以在你升级到 WordPress 电子商务托管计划之前,你是否被禁止在 WordPress 托管计划上安装它? (公平地说,WordPress.com 在最高级别计划中也解锁了 WooCommerce,因此这已经成为老生常谈。)为什么 VPS 托管计划是最便宜的? 如果你也像我一样觉得这件事很令人困惑,我不会怪你,尤其是在他们提供的许多不同的托管选项图表中,这仅仅是其中一个图表。

GoDaddy 每年赚取数十亿美元,所以我相信他们已经搞清楚了这些东西,但我要告诉你,经过 20 多年的网络开发经验,我可能会完全凭猜测从这些选项中选择一个计划。 从悲观的角度来看,感觉这种混乱可能是他们的销售策略。

技术

我知道这一点:这些计划是针对 PHP / MySQL 网站的。这意味着 WordPress、Craft、Perch、Ghost、Drupal、Joomla 等。 这是 LAMP 堆栈,它涵盖了所有大型 CMS。 就是这样。 Media Temple、Hostgator、Bluehost 和许多类似的托管服务都是如此。 我认为,用你所说的“传统”网络托管来形容它们,并不算是一种错误的思维方式。

你是否想运行 PostgreSQL 或 MariaDB 而不是 MySQL? 或者你是否想运行 ASP 而不是 PHP? 我敢打赌,所有这些托管服务都对此类问题有一些解决方案。 答案可能类似于“不要使用我们的共享托管产品,请使用我们的原始 VPS(“虚拟专用服务器”)产品,它具有直接的 root 访问权限,你可以自己安装。” 我猜想这也可以,但请务必了解,这些东西并不是它们托管服务的首选。 如果你遇到麻烦,我担心你很难获得良好的支持。

这引出了我的观点:你应该选择托管提供商的顺畅路径产品。

假设我想编写一个 Python 应用程序。 我不会购买 Hostgator 服务器。 我相信你可以让它运行,但这并不是他们真正宣传的东西。 这感觉不像是在一条顺畅的道路上。 而当我查看 Heroku 时,他们将它作为其提供的服务的首选产品。

虽然我本人从未使用过 Heroku,所以无法直接对其进行评价,但我听说过很多好话,而且他们已经做了 15 年了。

顺畅的路径与友好配对有关

Heroku 让我想起了托管提供商中另一个我认为很重要的分界线。 那些“传统”网络托管服务不会伸出一根手指来帮助你将你的网站迁移到他们那里。 他们更像是:这是你的 FTP 凭据,祝你好运。 对于像 Heroku 这样的托管服务,他们会提供一个类似于 heroku container:push 的 CLI,将你的本地代码部署到生产环境。 更好的是,它会直接从你的 GitHub 存储库进行部署。 让我感到困惑的是,为什么世界上所有的网络托管服务都不提供此项帮助。 一个帮助你进行部署的网络托管服务非常有价值。

我们谈论的是顺畅路径,对吧? Heroku 将自己称为“云应用平台”。 顺畅的路径就是那些服务器语言。 Node、Ruby、Python、Go。 如果你不需要任何这些东西怎么办? 假设你正在构建一个静态网站,在核心使用静态网站生成器(例如 Eleventy)(如 Jamstack)。 你会选择 Heroku 吗? 可能不会。 虽然你肯定可以在 Heroku 上实现它,但静态网站托管并不是 Heroku 的核心,因此不算是顺畅的路径。

那么,你应该在哪里托管静态网站? 这就是 Netlify 的全部意义所在。 Netlify 是静态网站的超级顺畅路径

事实上,Netlify 在 Jamstack 样式托管方面做得非常出色,以至于许多公司都试图提供类似的服务。 我认为 Azure 的 静态 Web 应用程序 就是一个例子。 那么,为什么要使用 Azure 而不是 Netlify? 如果它感觉像一条顺畅路径,而且如果你正在使用其他 Azure 产品,它也可能感觉像一条顺畅路径,假设他们的产品能够很好地协同工作。 Azure 是一个庞大的云平台,提供大量其他产品。 或者你可能只是对 Microsoft 产品有更多经验和开发者肌肉记忆。 我们稍后会谈到这一点。

现在,Jamstack(本质上是指静态托管 + 服务)在很多地方都有提供。 Cloudflare 提供了 Cloudflare Pages,你可能会因为其无限承诺(无限网站、无限请求、无限带宽,甚至无限团队席位)而利用它。

你可能会选择 Cloudflare Pages,因为你的 Cloudflare 产品(例如访问或 Worker)对你来说很重要,而且它感觉像是一条顺畅路径,可以将所有内容整合在一起。

Vercel 提供了 Jamstack 托管,但如果你需要,他们也会为你运行服务器。 他们的流行框架 Next.js 会预先构建页面,但也可以使用 Node 后端提供服务器端渲染页面。 Vercel 为你提供了那个后端。

Vercel 上的 Next.js 是一条非常顺畅路径。 他们说“在为 Next.js 打造的平台上部署”。 很难超越这一点。

AWS Amplify 最终是 Jamstack 托管,而那里的顺畅路径是使用 Amplify 将其他 AWS 服务缝合在一起。 这正是 AWS Amplify 的目的。

需要身份验证? 在幕后,它使用的是 Amazon Cognito,但 Amplify 会帮助你将它整合到你正在做的事情中。 需要存储? S3 是行业标准,Amplify 会帮助你将其集成。 需要数据库? Amplify 会帮助你建模并构建 API。

Firebase 提供了 Jamstack 样式的 托管,而顺畅的路径是依靠 Firebase 框架。

Firebase 具有许多非常有用的功能,例如实时数据存储、身份验证和 RUM 分析。 如果我没有使用任何这些东西,我不确定我会选择 Firebase 托管。 对于一个基本的 Jekyll 博客来说,它可以实现吗? 当然可以。 我个人会这样做吗? 可能不会。 它并没有真正依靠 Firebase 产品,因此顺畅路径的程度要低得多。

值得花点时间谈谈 💪 开发者的“肌肉记忆”。 你会对你经常做的事情形成肌肉记忆。 如果你已经拥有五个在 Netlify 上的网站,而且你已经一遍又一遍地完成了这些步骤,那么你的第六个网站也放在 Netlify 上是有意义的——即使其他一些托管服务可能更适合。 熟悉你的工具并感到舒适非常重要。 你可以比较价格、功能以及所有其他细节,但肌肉记忆是影响选择的最强大因素之一,我认为这完全可以接受。

你的托管服务应该满足你的核心需求

还记得我提到过一个帮助你进行部署的网络托管服务非常有价值吗? 所有这些托管服务都提供此项帮助:Netlify、Vercel、AWS Amplify、Google Firebase、Cloudflare Pages、Azure 静态网站。 这已经成为托管提供商的必备条件。 还有更多必备条件。

现代网站主机必备条件。

除了,你知道,托管网站。

  1. HTTPS。主机应该为我的网站提供 SSL 证书。最好是自动提供,而且应该是免费的(因为 Let’s Encrypt 是免费的)。
  2. CDN。主机应该尽可能地从 CDN 提供我的网站内容,即使这需要付费或配置。
  3. 部署。主机应该连接到 Git 仓库,并将文件从主分支移到生产站点。
  4. 预发布环境。主机应该提供预发布环境。

我应该回到 WordPress(以及其他 PHP/MySQL CMS)的话题。这就是这个网站所用的。传统的托管服务商服务这个市场。WordPress 占所有网站的 35.2%,这简直太疯狂了,这意味着这个托管市场里有大量的资金流入。但根据我的经验,传统的托管服务商几乎没有提供我刚才提到的那些托管必备条件。很多时候,你需要自己处理 HTTPS。你需要自己集成 CDN。你需要自己部署。预发布环境只是意味着购买另一台服务器。现在托管行业真是乱七八糟,现代网站主机做了很多事情,而传统的网站主机却做得很少。

不过,并非所有专注于 WordPress 的主机都是这样。对于托管 WordPress 网站来说,使用专注于 WordPress 的主机是最佳选择。我现在使用的是 Flywheel,我对他们的服务非常满意。他们提供了所有这些必备条件,甚至更进一步,还帮助进行 本地开发。

你特别问到了 DigitalOcean …

我觉得自己不太适合解释 DigitalOcean,但我认为可以这么说,DigitalOcean 提供了很多最佳选择。他们有一个叫做“Droplet”(它是一台服务器)的概念,它是从“容器”中创建出来的。现在你不用太担心容器的概念,但总而言之,它们是预先配置的服务器,可以运行各种技术组合。如果你想在 Droplet 中启动一个 LAMP 栈,那它就是首选。但其他很多技术也是如此。比如 Strapi,这是一个基于 Node、Nginx 和 PostgreSQL 的 CMS。DigitalOcean 提供了开箱即用的 Droplet,可以满足这些需求。

Droplet 的价格从每月 5 美元起,所以它们与其他主机一样经济实惠,甚至更实惠。你可能会发现一些实际上是 DigitalOcean 提供的托管产品!例如,WordPress 托管工具 SpinupWP 允许你快速创建配置好的 WordPress 托管环境,但它本身不提供托管,你需要“自带”主机,这很有可能就是 DigitalOcean 或 AWS(Amazon Web Services)。

事情会变得越来越复杂。

如果你觉得 DigitalOcean 很复杂,等听到 AWS 你就会觉得更复杂了。我们之前讨论过 AWS Amplify,但那就像 AWS 专为像你我这样的个人开发者设计的,用来快速搭建应用程序。它很酷,但只是 AWS 庞大功能的一小部分。

AWS 是一个庞大的云服务提供商,这意味着,当然,你可以创建 web 服务器,但还有数百种其他服务,比如数据库、存储、无服务器服务、API、日志等等,甚至你可以 租用一台量子计算机,这就像科幻小说里的东西。并不是说普通开发者不能使用 AWS 来托管网站,只是它并没有真正考虑这种 DX这本指南关于安装 WordPress 的内容让我感到很头疼。AWS 功能强大,拥有各种解决方案,而且价格极具竞争力。也许可以把 AWS 当成基础的 web 基础设施,它是为大规模运营而设计的。例如,网站主机甚至可能建立在 AWS 之上。

将你的需求与可用的选项匹配

让我们快速浏览一下需求与选项的匹配。这绝不全面。我只是把一些想到的,感觉是最佳选择的方案列了出来。

预算典型
WordPressMediaTemple / GoDaddyFlywheelWP Engine
其他 PHP + MySQL(例如 Craft CMS)BluehostCloudwaysfortrabbit
Ruby on RailsLinodeHeroku
Node.js放在 LambdaDigitalOcean
PythonVercelHeroku
GoVercelCloud Run
JamstackGitHub PagesNetlifyCloudflare Pages
GraphQL APIHasuraAWS Amplify / AppSync
图像存储S3Cloudinary

值得再次强调的是,托管有很多共同点。假设你有一个 index.html 文件要托管,它就是你的整个网站任何网站主机都可以做到这一点。毕竟,它们都是网站主机。它们提供文件服务并运行代码。它们没有那么不同。我们主要讨论的是 DX:它们是否运行我需要运行的东西?它是否简单明了?它们是否帮助简化操作?它们是否明确提供支持?

它是最佳选择吗?

然后是价格

我们还没有真正谈论价格。我知道这是很多人的主要考虑因素,我不想轻视它。但没有了解你的需求就很难谈论价格。我也不希望人们根据每月成本的几美元差价来做出重大的网站托管决策。如果你花半小时来解决原本不需要你解决的故障,那么这些节省的成本就会消失。

我发现网站托管有点像商品市场。价格相当稳定。如果一台主机看起来很贵,那可能是因为它提供了很多服务。如果一台主机看起来很便宜,那可能是因为它在某些方面削减了成本,而你最终会感受到这些成本的。如果你有一个小型的网站,那么你很有可能免费托管它。当网站发展壮大时,托管成本会感觉很低廉而且合理。

🛠 你觉得这一切都很有趣而且令人兴奋吗?如果是这样,你可能想考虑一下从事 DevOps 方面的职业,处理服务器、部署、基础设施和支持开发人员,这不必是其他开发工作的副业,它可以成为一份完整的职业。

祝你找到最适合自己的方案。