Matt Biilmann 是现代静态网站托管服务Netlify的联合创始人兼CTO,在开发工具构建、内容管理系统和Web基础架构方面有10多年的经验。他从开源目录 StaticGen 及GitHub上发现,静态网站生成器发展迅速。像 Nest 和 MailChimp 这样专注于设计的公司现在就使用静态网站生成器构建他们的主要站点。 Vox Media 基于 Middleman 构建了一个 完整的发布系统 。 Carrot 使用自己的开源生成器 Roots 为一些世界上最知名的品牌创建网站。近日,Matt 撰文 分析了这一现象背后的原因,并预言静态网站生成器将成为下一个大热门。
像Dreamweaver和FrontPage这样的桌面应用程序,通过WYSIWYG编辑器为构建以内容为驱动的网站提供了解决方案。网页被分成了导航栏、标题栏、页脚栏等可重用的部分。在某种程度上,这就是最早的静态网站生成器。但随着发展,这样的工具逐渐无法满足现代网站构建中设计与内容相分离的要求。于是,LAMP技术栈及诸如 WordPress 、 Drupal 和 Joomla 这样的CMS成为主流,Web进入2.0时代。用户不再只是跟随超链接浏览内容,而是可以订购产品、参与社区及创建内容。
但是,动态网站容易遭受蠕虫攻击。据保守估计,超过70%的WordPress部署容易因为已知漏洞遭受攻击(超过23%的Web网站以WordPress为基础构建)。而几个月前, 1200万个Drupal站点需要紧急打补丁 。此外,即使是最为优化的动态网站,其性能也无法同静态网站相比。并且,对于动态网站而言,缓存失效非常难以恢复,尤其是需要充分利用CDN的分布式缓存。WordPress网站并不保证同一个URL不会返回不同的HTML。跟踪页面缓存是否失效非常复杂。在这一点上,静态网站完全不同。它们遵循一个非常简单的缓存约定:在URL所对应的文件没有更新的情况下,任何URL都会返回相同的HTML。
近年来,作为传统动态网站基础架构的替代方案,现代静态网站生成器日渐盛行。许多导致静态网站失败的限制已不复存在。现在,每周都会有新的静态网站生成器发布。通常,它们都有如下特点:
:在文档顶部,通常采用YAML格式,如下所示:
标题:文档标题
分类:类A 类B
---
# 具体内容
文档正文
这使得使用元数据为单个文档作注解非常简单。
另外,静态网站生成器通常会提供一个命令行UI,用于构建网站或运行本地服务器。例如, Jekyll 就提供了jekyll build命令。
Matt认为,静态网站生成器技术现在之所以崛起,主要是因为如下几个原因:
但是,在成为主流之前,静态网站生成器还有一些工作要做。例如,初次选择一个静态网站生成器并开始一个项目非常困难,因为这涉及许多复杂的细节,而且这些工具及其文档都还有很大的改进空间。另外,静态网站生成器距离成熟的主流市场还很远,无法提供同传统动态网站平台一样的服务,最为明显的就是 内容编辑 。对前端开发人员而言,在文本编译器中直接使用Markdown进行编辑并发送到GitHub是个理想的工作流程,但对非技术出身的终端用户而言,这种方式并不友好。这是内容编辑同静态网站生成之间存在的一个巨大鸿沟。该问题不解决,静态网站生成就不会成为主流。
所幸,目前已经有一些“非CMS”方案。例如,The Verge就一直 使用Google Sheets作为Middleman的内容层 ; StaticGen 将Gist和GitHub API当作数据库用;Carrot 使用Contentful作为一个静态CMS 。Matt还提到了其它一些内容编辑解决方案,如 Prose.io 、N etlify的开源CMS ,感兴趣的读者可以进一步研究。
感谢郭蕾对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群 )。