静态网页、动态网页都是网页,都是在浏览器上用 HTML 展示出来的页面。HTML 是网页的基础结构,网页如何排版、每个元素在什么位置,都是由它来描述的。
我们每天看到的网页,无论是新闻网站,还是在线编辑、下载网站等,大部分都是动态网页,其中掺杂了少数的静态网页(例如,展示一个公司的电话号码、logo 及地址的网页一般是静态网页)。
静态网页和动态网页的核心区别是后台是否有数据库的支撑,也可以简单地描述为网页上展示的内容是否要变化,是因人而异地显示不同的内容(例如 QQ 空间),还是根据时间线呈现内容的变化(例如新闻客户端),或是一直保持不变(例如一些国企或政府网站)。
静态网页无须经过后台程序的处理。例如,我们将一个 .txt 文件的扩展名改为 html,放到服务器中,如果有请求来到服务器,服务器会直接将此文件吐回浏览器来显示。
动态网页要经过后台程序的处理,我们常见的 ASP、JSP、PHP 都是后台处理程序。以 PHP 为例,当网页被请求时,首先到 PHP 容器中进行解释,这时解释器知道了当前页面的需求(需要在网页中展示一行文字和一张图片),然后 PHP 程序连接数据库,获取这两个数据,将其插入网页的 HTML 中,再吐回浏览器来显示。
可能大家会问,以 html、shtml 结尾的 URL 一定对应于静态网页,以 asp、jsp、php 结尾并包含“?”的 URL —定对应于动态网页,对吗?
咱们打开一篇腾讯网站的新闻,观察它的 URL(https://new.qq.com/cmsn/NEW20190/NEW2019042300832202.html)。
这个网页的 URL 就是以 html 结尾的,但它内部包括视频、正文、广告等多种元素,而且都是网页的主框架加载完之后,靠 AJAX 拉取数据的,所以上面问题的答案是:不对。这种格式主要是为了对搜索引擎更友好而进行的动态网页伪静态化。
总的来说静态网页和动态网页有以下特点: