首页 > 编程笔记 > Java笔记

动态网页和静态网页的区别

阅读本教程的读者至少已经具备了初级的 Web 开发基础,了解 HTML、CSS、JavaScript 等前端技术,甚至还亲自搭建过网站。大家应该都知道,网页本质上就是一个 HTML 文档,浏览器访问网页,其实就是下载并解析 HTML 文档的过程。

静态网页

如果 HTML 文档真实存在于服务器的某个文件夹中,那么服务器就直接读取该文档内容,然后发送给浏览器。这种 HTML 文档是程序员提前编辑好的,它的内容不会发生变动,任何情况下访问该文档看到的内容都是一样的,所以称它为静态网页(Static Page)

例如,新宝库为了提高用户访问速度,提前将首页(https://www.xinbaoku.com/index.html)制作成了一个 HTML 文档,只要不更新网站,它的内容在何时何地都是一样的,这就是一个典型的静态网页。

早期(2000 年以前)的互联网大都是静态页面,用来对外展示一些信息,就像说明书一样。

动态网页

如果 HTML 文档不存在,服务器就需要根据用户的请求参数(例如 ID、用户名、分类、时间、地点等)临时生成一个 HTML 文档,然后再发送给浏览器。这种临时生成的 HTML 文档的内容不是固定的,用户的请求参数不同,生成的内容往往就不同;因为它的内容经常变动,所以称为动态网页(Dynamic Page)

例如,我们在网上订购周杰伦演唱会门票时,会看到剩余门票的数量,它是实时更新的,用户每订购一次它的数量就减一,这种网页就是编程语言在查询数据库后临时生成的,它只能采用动态网页技术来实现。

动态网页必须借助某种编程语言才能实现,目前常见的解决方案有以下几种:
技术方案 /
编程语言
说明
PHP 一种专门用来开发动态网站的脚本语言,学习和使用都非常简单,有很多开源系统,是目前市场占有率最高的 Web 后台开发语言。
ASP 微软推出的第一代 Web 开发技术,只能用于 Windows 系统;互联网早期曾风靡一时,现在已经没落。
ASP.NET 微软推出的第二代 Web 开发技术,它基于 .NET Framework 平台,通常使用 C# 编程;2010 年前后使用率比较高,现在也逐渐没落。
Python 一种通用的脚本语言,借助 Django、Flask 等框架可以进行 Web 开发,在目前的市场中占有一席之地。
Node.js Node.js 是 JavaScript 运行环境在服务器端的移植版,有良好的并发性,深受 Web 前端程序员的青睐,小众且有逼格。
Servlet Servlet 是基于 Java 的第一代 Web 开发技术,它虽然运行效率高,但是生成 HTML 页面非常麻烦。

JSP 是基于 Java 的第二代 Web 开发技术,它可以直接嵌入到 HTML 文档中,使用它生成 HTML 页面时非常灵活。

实际开发中,Servlet 和 JSP 通常一起使用,适合大中型项目和企业级项目,市场占用率非常高。
JSP

进阶

其实,我们还可以将浏览器请求网页的过程进一步抽象。对于浏览器来说,它接收到的内容就是 Web 服务器通过网络传送给它的一个字符串流,只要把这个字符串流以 HTML 格式来解析,就能看到网页的效果。

字符串流可以从某个静态 HTML 文档中原封不动地读取,也可以由后台程序临时生成。动态生成字符串流时,后台程序可以查询数据库,分析用户请求参数,检测服务器资源状态等,从而使得生成内容千变万化。

从这个角度看,后台程序不必生成临时的 HTML 文档,只要输出一个字符串流即可。

总结

静态网页和动态网页的区别:
和请求静态网页相比,浏览器请求动态网页时仅仅多了一个步骤,就是生成 HTML 文档的过程。但是这个过程可不简单,它是决战 Web 后台开发的制高点,催生了很多编程语言和框架,而且更新速度非常快。

从本质上讲,Web 后台程序员就是在解决生成 HTML 文档的问题。

注意,只有服务器才会区分静态网页和动态网页,浏览器并不关心它们的区别;对于浏览器来说,它只需要得到一个字符串流,至于这个字符串流是如何生成的,它并不关心,也没有必要关心。

所有教程

优秀文章