互联网网页技术的发展简单就是一日千里。从静态网站这种最早期的网站形式,到后来因为业务的需要产生了CGI(Common Gateway Interface)来动态处理请求,然后又有了PHP这样的专门的模板化语言来处理动态请求。直到发展到现在,动态页面的处理技术已经非常成熟。促生了谷歌、Facebook、Amazon、Twitter这样的公司。

static-site-generator.jpg

但动态网站的发展并不影响静态网站的存在,只是从纯代码编写/可视化网页设计(像 Dreamweaver 和 FrontPage 这样的桌面应用程序,通过 WYSIWYG 编辑器为构建以内容为驱动的网站提供了解决方案)发展到利用静态化工具来生成网页,这样的工具称为静态网站生成器(Static Site Generators,SSG)。


静态网站生成器的特点


  • 模板:允许将网站分解成布局组件和包含组件,以便消除重复,这是静态网站生成器的基本要素之一。
  • 支持 Markdown:Markdown 的兴起是静态网站生成器流行的根本原因之一。所有主要的静态生成器都支持 Markdown,也有一些支持 reStruturedText 或其它标记格式。但通常,它们都允许内容开发人员以结构化的格式编写纯文本文档,保证了内容与设计的分离。
  • 元数据:在文档顶部,通常采用 YAML 格式,这使得使用元数据为单个文档作注解非常简单。
  • 资源管道:现在的前端开发几乎总是用到多种构建工具和编译器。大多数现代静态网站生成器都包含了一个资源管道,用于处理资源编译、转译、压缩和打包。

另外,静态网站生成器通常会提供一个命令行 UI,用于构建网站或运行本地服务器。例如, Jekyll 就提供了 jekyll build 命令。

现代静态网站托管服务Netlify 的联合创始人兼CTO Matt Biilmann 认为,静态网站生成器技术现在之所以崛起,主要是因为如下几个原因:

  • 浏览器发展:现代浏览器本身就是一个操作系统。它不再只是显示从 Web 上下载的文档,而是能够运行成熟的 Web 应用程序,过去许多需要动态代码的特性现在都可以移到客户端了。例如,可以使用 Disqus 、 Isso 添加评论功能,使用 Twitter 或 Facebook 的 JavaScript 组件集成社交应用,使用 Swiftype 添加搜索功能,等等。基于浏览器的网站插件越来越多,而使用 Ember.js、AngularJS 或 React 构建的现代 Web 应用通常也完全作为静态网站部署。
  • CDN 成为主流:任何人都可以注册 Amazon AWS,并在网站前端设置 CloudFront 服务。 Fastly 、 MaxCDN 、 CloudFlare 等公司提供了小企业也用得起的 CDN 服务。虽然动态网站也能使用 CDN,但缓存失效是个棘手的问题,而静态网站很容易直接部署到 CDN,并可以直接从离用户近的本地缓存提供服务。
  • 高性能不可或缺:越来越多的用户通过移动设备访问网站,网站性能变得前所未有的重要。移动设备不支持多任务,浏览网页时几乎无法做其它事,等待页面加载会格外让人沮丧。然而,动态网站无论如何优化,其性能也永远不如一个托管在 CDN 上的静态网站有保障。此外,静态网站生成减少了许多开发过程中需要考虑的性能问题,例如,无需考虑数据库查询的效率。
  • 构建工具应用广泛:前端开发人员大量地使用构建工具、包管理器和各种编译器、转译器。Grunt 是第一个成为主流的前端构建工具,大多数新项目都有构建步骤。构建工具的普及使得静态网站生成器更自然地成为前端工具集的一部分。

静态网站生成器的一个推动力——专注写作


在文章专注写作——基于静态网站生成器的轻博客搭建技术中指出,基于静态网站生成器的轻博客搭建技术让我们更专注于写作,它使更多文字创作者无须更多学习并浪费时间于前端视图、样式和控制,以及数据技术。


静态网站生成器列表


虚拟主机提供商Netlify维护的StaticGen集合了超过250个静态网站生成器项目;staticsitegenerators.net的静态网站生成器列表更集合了460个静态网站生成器项目。

比例流行的静态网站生成器有Jekyll(Ruby)、Pelican(Python)、Hugo(go)、Metalsmith(node.js)、Hexo(Node.js)、Next.js(React),可以看出基本不使用PHP技术,有人认为PHP在读取、操作和保存文件时比较慢CMS Critic Awards 还推荐Publii 作为2019年的最佳静态网站生成器。

同时,我们也可以参考平面文件CMS(Flat File CMS)这个分类,可能产生类似的效果(数据保存到一组文本文件,不使用专用数据库),它们包括CMSimple/CMSimple_XH、GRAV、October CMS、Statamic等。这些工具最新归类于轻量级 CMS(Lightweight CMS)。


静态网站托管


很多云服务商提供静态网站托管:AWS、Cloudflare、Digital Ocean、GitHub、Netlify、Vercel。

👍



本文由 泰丽康健 整理发布,参考 CC-BY-SA 3.0 协议共享,欢迎转载、引用或改编。
感谢您的支持,以让我们共同致力于互联网的商业观点和事业创新!

楼主残忍的关闭了评论