产品经理需要了解的那些技术4:静态网页和*态网动**页

形式

静态网页、*态网动**页看着都是网页,都是在浏览器上用HTML展示出来的页面。

*态网动**页的形式是请求

例如https://127.0.0.1/?c=home

意思是向服务器请求一个参数c,值是home的请求,请求之后,服务器返回一个页面,浏览器进行展示。

静态网页的形式是文件请求

例如https://127.0.0.1/hello.htm

意思是向服务器请求一个叫hello.htm的文件,请求之后,服务器返回一个页面,浏览器进行展示。

说明

很多系统的页面,大部分都是动态页面,互联网上的新闻网站、资讯、*载下**网站等,大部分都是*态网动**页或者伪静态网页(后面会写为什么需要那么,也可能会处理成静态网页,少数网站是纯静态网页。

静态网页和*态网动**页的区别,有人说是静态网页是不动的,*态网动**页是可以动的。也有人说是后台是否有数据库的支持,也可以简单的描述为网页上的展示的内容是否需要变换,是因人而异显示还是一直保持不变。

其实这些说法都没有说到根本, 因为静态网页也可以做到因人而异,例如一个使用js写的网页计时器,就一个html,也不需要服务器可以直接打开,什么时候打开,就显示什么时候的时间。*态网动**页也可以一直保持不变,例如用php写一个hello world的欢迎页面,什么时候访问都只会显示hello wolrd。

*态网动**页和静态网页的最主要的区别是,静态网页本来就是标准的html文件(可以包含js、css文件)。而*态网动**页原来并不是html文件,只有在用户请求的时候,才生成相关html数据,然后返回给浏览器相应格式的html文件,供浏览器访问。

不同的语言转换html的方式类似,但需要程序是不一样的,这时候需要的大家常说的容器(或者解析器),例如将java或者jsp转为html则需要tomcat、jboss等java容器,php则需要php引擎,python需要python引擎,这就是为什么服务器通常需要部署不同程序环境的原因。

静态网页无须经过容器引擎的处理。例如,我们将一个.txt文件的扩展名改为.html,放到服务器中,如果有请求来到服务器,服务器会直接将此文件吐回浏览器来显示。

当然这里的服务器是指的处理html的服务引擎,例如nginx 或者apache sever(apache httpd,不是apache tomcat)等,并不是说装个服务器就可以直接可以用了。

*态网动**页要经过容器引擎的处理,我们常见的ASP、JSP、PHP等是不同语言实现的*态网动**页, 以PHP为例,当访问被请求时,*态网动**页要到PHP容器中进行解析,由解析器对里面的代码进行处理,如果涉及到数据库访问,则需要到数据中进行数据查询,然后将数据插入到对应的位置,最后生成html格式的html文件,交给html服务引擎(例如nginx),由nginx,返回给访问者(浏览器),浏览器收到html后进行显示。

*态网动**页里,一般都是混合代码,固定的html格式代码,例如样式、排版等,和处理动态信息的程序代码。后来演变的是模板架构,先按照页面需要显示的效果设计出来模板,然后再填写对应的动态变量。而动态变量的计算和生成则在其他代码里,这样比较方便维护和调试。再后来演进的是前后端分析架构,后端只负责提供数据,而前端则负责将数据进行显示。

差异

所以我们很容易就等的出来,静态网页的访问速度是固定的,受限于文件的大小,大的需要多传输一会,小的少传输一会,在当今的网络条件小,只要不是几十M的文件,基本上很难有差异。

而*态网动**页除了多了一步解析之外,还取决了里面代码的所处理的事项,如果需要查询数据库,则需要等待数据库返回结果,如果需要进行计算,就需要等待计算的结果,等代码都处理完毕后,在进行返回。

所以静态网页的访问速度要远远超过*态网动**页。

有人可能会问了,如果一个*态网动**页里,只有html代码,没有程序代码,那么算是*态网动**页还是静态网页,这个问题就跟前端的html页面全是js代码(html里的脚本代码)是*态网动**页还是静态网页,是类似的。

这两个问题留给大家讨论。

静态化

通过上面的介绍,大家可能发现,静态网页和*态网动**页最大的区别就是要不要过解析器,有些业务访问量很大,但是变化不是很大,那么访问速度、减少系统开销(每次有人进行访问,都进行一次业务处理,有的还涉及到查数据库),可能会进行静态化处理,就是将该*态网动**页先生成对应的html页面,等用户访问的时候,直接返回给早就生成好的html文件,不但减少了服务器开销,还提高了访问速度,减少了访问时间。

现在主流的cms系统都带有静态化技术。

伪静态

由于搜索引擎收录网站内容的时候,只收集html、htm 等静态网页的后缀的链接,所有一些系统提供了将url请求模拟成html的

例如我们上面说到的 https://127.0.0.1/?c=home, 这样链接,搜索引擎就不收录,如果这是我们的主页,那么搜索引擎不收录主页,就会减少搜索到网站的几率和排名。

所以有一种技术,将https://127.0.0.1/?c=home 模拟成 https://127.0.0.1/home.html .这样搜索引擎一看,你是静态网页,我去收录一下。 而实际上当请求时,服务器并不是将home.html给返回回去了,而是依旧走原来解析、处理、返回的方式。

前端技术

确实也是伪静态的一种,服务端负责数据,而浏览器负责渲染(通过脚本数据,而脚本数据也是服务器下发的)。

其模式是服务端不再直接发送成品,而是发送了一套工具,根据业务的实际情况再进行计算处理最后拼接而成。

类似于原来买家具,商家的服务是一组普通工人+一套组合好家具。工人负责将快递发过来的家具搬进来。

而现在是发送一组技术工人+各种组件,技术工人就等着对方发来什么组件,就进行对应的拼装。

好处自然是组件运输更快捷,然后拼装的时候可以根据家里实际情况再进行怎么摆放,有了一定的自由度。