使用静态站点生成器的 7 个理由

 162 2019-10-15 20:31:18 艾奇站长网

TAG:静态生成器

静态站点生成器变得越来越流行。下面解释一下我们所说的“静态站点生成器”到底是什么。

什么是静态站点?

回想一下你建立的第一个站点。很多开发者都是通过创建一系列独立的 HTML 文件开始的。每一个都会包含一些资源,如 CSS、图片,或许还有一些 JS。你可能会直接在文件系统中直接打开这些文件,而不需要使用WEB 服务器。就是这么简单。

当你的站点变得越来越复杂的时候,麻烦就来了。考虑下导航:在每个页面中它可能都是一样的,但当增加一个新的页面时,就需要更新其他所有的页面。甚至当图片或CSS的文件结构发生变化时,也会产生很多麻烦。你可能会考虑服务器端的引入或者PHP,但一个更方便的选择是使用内容管理系统(CMS)。

什么是内容管理系统?

内容管理系统通常会提供管理控制面板–它允许作者将编写的内容存储到后端的数据库。当用户请求一个网址的时候,CMS 需要:

检测需要请求哪一页

从数据库请求相应的数据

加载 HTML 模版(通常是在文件系统中)

使用模版渲染内容

把格式化的 HTML 内容返回给用户浏览器

这些几乎是在瞬间完成的。模版可能会包含一些代码,根据导航层级结构生成菜单。大约有超过四分之一的人会选择使用 PHP/MySQL 驱动的 WordPress 来管理他们的站点。


不幸的是,CMS 也会产生一些问题:

你需要遵循 CMS 的工作方式,想添加自定义文本或者组件可能不是很方便

服务器需要做更多的工作,可能会影响到性能

可能还有其他问题,如软件升级或者数据库故障,都会使你的站点 Down 掉

什么是静态站点生成器?

静态站点生成器是介于手工编码的静态站点和 CMS 之间,同时保留两者优点的折中解决方案。本质上,你会使用类似 CMS 模版的概念生成静态 HTML 站点。内容可能会是从数据库中提取的,但通常情况下,会使用 Markdown 文件。

站点生成可以是在你的开发机器或临时服务器上进行。之后产生的 HTML 文件被部署到 WEB 服务器上。用户将永远不会知道其中的差别。

一个相关的概念是 “Headless” 或 “Decoupled” CMS。它们使用一些接口如 WordPress 来管理内容,但允许其他系统通过 REST API 来获取数据。因此,静态站点生成器可以使用内部服务器上的 WordPress 中提取数据生成静态站点。产生的静态站点可以上传到 WEB 服务器–但安装的 WordPress 应该永远都不能被外部访问到。

一些流行的静态站点生成器包括:Jekyll、Pelican、Hugo 以及 Metalsmith,可以访问 StaticGen 查看更多。下面说说使用静态站点生成器的一些好处。


1、方便灵活

CMS 通常会限制你的选择,因为它们依赖于特定的数据库。如果你想在页面上添加一个 Twitter 小工具,你通常就需要一个插件、或者短代码、或者一些自定义的函数。

在静态站点,你可以直接把它插入到文件、或使用partial/snippet。基本没有任何限制,因为你不需要受 CMS 强加的那些束缚。

2、更好的性能

大多数的 CMS 提供内置或依靠插件的缓存系统以确保生成页面,当需要的时候重用。虽然管理、验证、重新生成页面需要开销,但这还是有效果的。

而静态站点是预缓存、永不过期的页面。在部署之前还可以压缩文件以确保最小化加载。静态站点始终要比使用相似模版的 CMS 驱动的站点性能更好。

3、更少的服务器端依赖

典型的 WordPress 安装需求:

一个合适的操作系统,如 Ubuntu 或 CentOS

一个 Web 服务器,如 Apache 或 NGINX

PHP 和相关扩展,以及 Web 服务器配置

MySQL

WordPress 应用

一些必要的插件

主题/模版代码

这些依赖都必须安装和管理。WordPress 相比其他应用需要更少的依赖,但任何一个地方的更新都可能引起混乱。

静态站点是轻量级的,可以托管在任何可以返回 HTML 的服务器上。不需要其他的安装、管理和更新。

4、更高的可靠性

CMS 系统很复杂,有很多故障点,不管运行多长时间的 WordPress 都可能遇到过 “Failed to establish a database connection” 的错误。流量的突增等不可预见的 CMS 问题,都可能导致数据库崩溃或者连接受限。

静态站点服务器很少出现这种情况,因为它只需返回 HTML 文件。虽然仍有肯能出现服务器崩溃,但它可以接受更多的并发请求。

5、卓越的安全性

别人攻击你的网站可能会有多种原因。流量劫持、流氓广告、链接、未经用户授权的恶意软件托管等。

CMS 为攻击开启了大门。最明显的是登录界面:用户密码的安全性是最弱的。要知道,任何其他运行在服务器端的页面都有潜在的安全漏洞–例如,通过联系表单向你发送垃圾邮件。

静态网站很少,或者没有服务器端的功能。你无法通过脚本或者数据库漏洞来访问它。有人仍可能通过 FTP 或 SSH 访问,但他们会尽力做更多其他的破坏,而不是破坏网页或者上传文件。通过 git status 或者文件夹检测就可以快速找出问题。这比修改密码、修复站点然后重新生成它们要简单的多。

6、客户端控制注意事项

你可能需要花费数周的时间来制作具有吸引力的主题。但使用 CMS 并不容易,并且它为内容编辑器提供了强大的功能。你可以锁定一些功能,如安装插件,但这并不能阻止其他人更改字体、添加怪异的颜色、使用很差的排版或者布局

静态站点可以使用 Markdown 文件,这限制了用户的选择,他们会犯更少的错误,不会产生影响页面的情况。有些人可能会想念 CMS 的管理面板,但你可以:

使用现有的 CMS,并在生成前清理数据,或者

提供更简单的工作流,如在 StackEdit 中编辑 Dropbox 文件。

7、版本控制和测试

数据库数据是很容易丢失的。CMS 允许用户随意的添加、删除、修改内容。清空整个站点也只需要几步点击。你可以备份数据,但即使是定期这么做,仍会丢失一部分数据。

静态站点是安全的,假如你使用 Markdown  文件和 Git 之类的版本控制系统。旧的文件会被保留,并且修改可以很快的撤销。测试变得更加容易,因为网站可以在任何地方生成并预览–即使是在你自己的电脑上。


这就是使用静态站点的好处,对吗?



猜你喜欢
服务器安装SG11扩展多版本详细教程

服务器安装SG11扩展多版本详细教程

教程资讯 236 2019-10-05

服务器安装SG11扩展多版本详细教程教程一、宝塔面板用户安装1、进入宝塔面板,点击软件管理,找到你网站对应的php如下图...

TAG:教程SG11扩展服务器

WordPress教程-添加前台漂亮注册页面

WordPress教程-添加前台漂亮注册页面

教程资讯 244 2019-10-05

教程开始1、新建一个名为register.php的文件并添加以下代码放到你主题目录的pages文件夹下<?php/...

TAG:WordPress教程注册页面

WordPress主题教程,知更鸟主题评论留言等级美化教程,部署美化留言者等级图标

WordPress主题教程,知更鸟主题评论留言等级美化教程,部署美化留言者等级图标

教程资讯 223 2019-10-29

WordPress的评论区个人总是感觉不太美观,找了各种办法美化博客评论区,还找了很多相关教程,好多不支持知更鸟Begi...

TAG:WordPress主题知更鸟等级图标

Thinkphp自带分页类样式转Bootstrap分页样式

Thinkphp自带分页类样式转Bootstrap分页样式

教程资讯 256 2019-09-27

分享一段使用Thinkphp自带分页类样式转为Bootstrap分页样式的代码,首先我们看看效果图:无需改动tp的pag...

TAG:Thinkphp分页Bootstrap