纯静态网站
打开一个纯静态网站,纯静浏览器拿到的态网那堆文件里没有一行是服务器现算出来的。HTML、纯静CSS、态网JavaScript、纯静图片、态网字体,纯静全是态网提前写死、打包好、纯静放在那儿等着被取走的态网。就这么简单,纯静也正因为简单,态网它活成了互联网上最顽固的纯静那类东西。 我前阵子帮朋友搬一个博客。态网他原来用某款动态程序,纯静数据库三天两头出毛病,插件更新一次崩一次。后来我把他那两百多篇文章导成 Markdown,套了个静态生成器,跑一遍,出来一堆文件夹和 html 文件。上传到对象存储,配个 CDN,完事。他盯着后台看了半天,问:“那评论呢?”我说评论走第三方,前端嵌一段脚本就行。他又问:“那搜索呢?”我说搜索用前端索引,几兆的 json,浏览器自己查。他沉默了一会儿,说这玩意儿怎么感觉比原来那个还快。不是感觉,是真快。没有数据库查询,没有 PHP 解释执行,没有模板渲染,服务器要做的只是把文件吐出来。快得有点不讲道理。 纯静态网站的核心就一句话:内容在构建时就已经确定。你写文章的时候,生成器把 Markdown 变成 HTML;你改样式的时候,构建工具把 Sass 编译成 CSS;你甚至可以把整个站点预渲染成一套完整的文件树,丢到任何能托管文件的地方。GitHub Pages、Netlify、Vercel、一台装了 Nginx 的便宜 VPS,甚至一个 U 盘——只要能把文件发出去,它就能跑。没有运行时依赖,没有版本冲突,没有“服务器又挂了”这种破事。 但这不意味着它没脾气。静态网站最烦人的地方在于,任何一点动态需求都得绕路走。表单提交?得接第三方服务或者自己搭个函数计算。用户登录?纯静态做不了,得靠外部认证。后台管理?要么本地写完再部署,要么套一个 headless CMS,但那个 CMS 本身还是得跑在某个地方。我见过有人硬要用纯静态做电商,购物车用 localStorage 存,结账跳转第三方支付,结果用户换个浏览器购物车就空了。这不是静态的错,是选错了工具。静态网站适合内容为主、更新频率可控、不需要实时交互的场景。博客、文档、产品落地页、个人作品集,这些它干得漂亮。论坛、社交网络、后台系统,别碰。 还有个容易被忽略的点:纯静态不等于纯手写。现在的前端工具链已经能把静态站点做得相当“动态”。Astro 允许你在页面里写组件,构建时全部渲染成静态 HTML,需要交互的地方再局部 hydrate。Eleventy 拿一堆模板和数据文件,生成整站。Hugo 更狠,一个二进制文件,几百毫秒构建上千页面。你写起来跟写动态站点差不多,但产出物是彻头彻尾的静态文件。这种“构建时动态,运行时静态”的思路,把两边的优点都占了。 安全方面也省心。没有数据库,就没有 SQL 注入。没有服务端代码,就没有远程代码执行。没有后台登录,就没有弱密码被爆破。攻击面小到只剩静态文件服务器本身。当然,CDN 配置错了照样会泄露源码,但那是运维问题,不是架构问题。我自己的几个站点跑了三年多,没打过一次补丁,没重启过一次服务。不是运气好,是实在没什么可攻击的。 成本就更不用说了。一台最便宜的 VPS 能塞几十个静态站,因为每个站消耗的资源几乎可以忽略。用对象存储加 CDN 的话,流量不大的情况下一个月可能就几毛钱。我有个文档站,每月访问量几千,放在 Cloudflare Pages 上,免费额度用不到十分之一。朋友那个博客搬过去之后,他把原来每年几百块的虚拟主机退了,现在唯一的花销是域名。 说到底,纯静态网站是一种取舍。你放弃服务端的灵活性,换来速度、安全、简单和便宜。这个交换在内容型站点上几乎总是划算的。互联网早期全是静态页面,后来大家觉得动态更方便,再后来发现大部分动态根本没必要。绕了一圈,静态又回来了——只不过这次带着现代工具链,写起来不痛苦,用起来更舒服。
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-