静态网页
如果 HTML 文档真实存在于服务器的某个文件夹中,那么服务器就直接读取该文档内容,然后发送给浏览器。这种 HTML 文档是程序员提前编辑好的,它的内容不会发生变动,任何情况下访问该文档看到的内容都是一样的,所以称它为静态网页(Static Page)。
例如,C语言中文网为了提高用户访问速度,提前将首页(http://c.biancheng.net/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 文档,放在服务器的某个文件夹中,浏览器请求该网页时,服务器读取 HTML 文档的全部内容,然后发送给浏览器。只要不更新网站,HTML 文档的内容就不发生变化。
- 动态网页是使用编程语言生成的临时 HTML 文档,它的内容可以根据用户的请求参数发生变化;对于同一个 URL,不同的用户、不同的时间、不同的地点访问时,看到的内容很可能也不同。
和请求静态网页相比,浏览器请求动态网页时仅仅多了一个步骤,就是生成 HTML 文档的过程。但是这个过程可不简单,它是决战 Web 后台开发的制高点,催生了很多编程语言和框架,而且更新速度非常快。
从本质上讲,Web 后台程序员就是在解决生成 HTML 文档的问题。
注意,只有服务器才会区分静态网页和动态网页,浏览器并不关心它们的区别;对于浏览器来说,它只需要得到一个字符串流,至于这个字符串流是如何生成的,它并不关心,也没有必要关心。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/23962.html