上世纪八十年代末 , 不列颠的伯纳斯-李爵士发明了万维网 , 距今已有三十年 。万维网并非互联网的全部 , 然而它的出现 , 为普罗大众开启了新世界的大门 。从此之后 , 互联网的风口轮动不休 , 静态资源这棵门前的早树却安静如故 。许多年过去了 , 静态资源服务的基础构架没有发生大的改变 , 改变的只是它所承载的内容和服务的对象 。
作为万维网的基石 , HTTP 协议的版本号也曾停滞在 1.1 达十八年之久 , 期间经历了两次迭代 。2015年除夕 , HTTP/2 终于正式获批 。这一协议在继承 HTTP/1.1 绝大部分语义的前提下 , 改革了传输方式 , 其效率接近 TCP 协议的能力极限 。它将在未来几年内 , 挑战关于Web 性能优化的许多陈规俗制 。然而我们围绕着静态资源基础设施的工作 , 在那个春天才刚刚起步 。几年来所取得的进展很难说尽如人意 , 谨以此文作一注脚 , 一起来看“静源深流” 。
一、先有“静” , 还是先有“动”?在万维网面世的头几年 , 网页就是电子化、通过互联网传输的 html 页面 , 除了支持超文本链接 , 可以天马行空地从一个网页跳转到另一个网页之外 , 它们和你翻开书本或杂志所见的页面 , 以及商店橱窗或影院门口张贴的海报 , 就浏览体验而言 , 不见得有什么了不起的优势 。我的互联网启蒙 , 居然还是通过一份名为《计算机世界》的纸质报纸完成的——这种报纸价格便宜量又足 , 一块钱就能买上沉沉的一叠 , 而且质地良好 , 很受同学们的欢迎 。
那个时代 , 动态或静态的说法还不怎么流行 , 大部分以 http:// 为前缀的 URL 是可以作为固定的参考文献地址来引用的 。
1996年 , 李爵士领衔的万维网联盟(W3C)从 IETF 手里赢回了 HTML 标准的主导权 。也就是在这一年的12月 , 微软公司推出一种名为 Active Server Pages 的脚本语言 , 便是日后大名鼎鼎的ASP 语言 。在 php 这种“全世界最好的语言”大杀四方之前 , ASP 一度是 Web 技术的代名词 。
?打开Notepad , 写下一行 <%Response.write “Hello world!” %> , ?把这个文本文件命名为 index.asp , 保存在 IIS 的工作目录下 , ?然后打开 IE , 输入 http://localhost/index.asp , ?「友好的世界」就此呈现 。
简单吗?是的 , 就像把大象放进冰箱一样简单 。Notepad、IIS、IE , 所有的工具都是现成的 , 只需要一台安装了 windows NT 操作系统(即 Windows 操作系统的早期服务器版)的个人电脑 , 你就可以在一分钟内创建自己的服务端动态网页 。与名字晦涩难懂、令人望而生畏的公共网关接口(CGI)相比 , 不得不说 , 这太酷了!
脚本语言的介入 , 使得服务端编程技术迅速走上了平民化的康庄大道 。与此同时 , 浏览器端也在发生着天翻地覆的变化 , DOM、JAVAScript/JScript、css 相继被主流厂商接纳 , DHTML 技术初具雏形 。之后数年间 , 动态网页取代静态网页 , Browser/Server 架构取代 Client/Server架构 , 分别成为万维网和网络应用的主流 。
动态网页大行其道之后 , “静态资源”的概念方才渐渐显露轮廓 。所谓动静分离 , 起初只是 Web 程序员们的一种自发的、朴素的实践 。起手建好static 目录 , 下设 css / imgs / js 子目录 , 顺带斟酌下 img 和 imgs 哪个更妥 , 乃是一枚老鸟的自我修养的体现 。随着Web 站点或应用的结构日益庞杂 , 服务端程序和那些仅供浏览器下载、无须在服务端执行或运行的——也就是“静态”的——文件之间显然存在着重大的分歧 。即使是泾渭分明的目录 , 也不足以容纳这种分歧 。于是 , 架构师们开始将这些“静态”文件部署在独立的 Web 容器中 , 一则可以提升服务性能 , 二则方便开发和运维 , “动静分离”逐渐成为一种被普遍接受的顶层设计模式 。
动静分离的模式一直沿用至今 , 但是它的内涵已经发生了深刻的变化 。今天 , 服务端中间件的性能优劣不再成为瓶颈 , 客户端(不局限于通用浏览器)的用户体验才是亟需关注的重点 。因此 , 我们也不再纠结于内容在服务端以什么样的形态存在 , 而是站在客户端的角度 , 去观察 HTTP 请求和响应的特点 , 以此作为界定静态资源的依据 。
推荐阅读
- 一文理解HDFS
- 一文带你搞懂前端本地存储
- 一文带你了解不一样的SQL,惊喜多多
- iOS|iOS 16前的最后一个版本!iOS 15.5登场:一文了解详情
- 一文读懂Redis的dict字典数据结构
- 新疆维吾尔自治区|一文带你了解和田玉“前世今生”
- 为啥“不合格”却没有处罚 看懂路由器检测
- HDMI 2.0已淘汰!HDMI 2.1上位:一文看懂新接口优势
- 索尼|PS5存储扩容需要注意啥?一文读懂
- 一文读懂AI计算机视觉技术
