谈谈页面的静态化

来源:互联网 发布:51单片机项目 编辑:程序博客网 时间:2024/06/05 05:19

首先什么是静态化网页

html文件来显示具体的数据内容。此方式就是静态网页(对于静态网页一定有对应的html文件存在)

对于静态网页优缺点:

优点:加载速度快

缺点:维护工作量比较大并且没有数据交互功能

动态页面

使用动态语言与MySQL数据库交互获取数据然后显示的方式就是动态网页。

动态网页优缺点:

优点:解决了静态网页的缺点

缺点:对于动态网页与静态网页比较起来效率会慢。

什么是静态化

将动态数据以静态html呈现,即将数据库中的数据用html格式展示出来。整个过程就叫静态化(静态化就是将数据库中每一个内容都生成处一个对应的html文件)


静态化的好处

减少服务器的压力

对于静态的html,Apache接受到请求之后会直接读取对应的文件。而对于动态php,在过程中有PHP引擎解析,并且还有数据库的交互。因此影响性能。对于静态html效率受影响只有磁盘的IO

加载速度快

对于浏览器有缓存功能。

更加安全

对于静态的html文件不接受任何参数。

更加符合搜索引擎优化

对于百度、360搜索引擎更加喜欢收入静态的内容


静态化实现原理

对于静态化实现只要能够获取到要输出的内容然后再写入到文件中(非常的有规律具体的目录以及文件名都是非常有规律)
①获取输出的内容写入到文件中


②访问触发


③查看结果


对于php实现静态化常用的方式是使用OB缓存的方式来实现

缓存区介绍

①静态网页请求


在上述流程中存在一个非常重要的缓存,叫做程序缓存(临时存储读取到文件内容)。对于程序缓存是一定存在的。不能手动的关闭程序缓存。


②动态网页请求流程


在上述流程中存在两种缓存。第一种就是程序缓存,另外一种是PHP中OB缓存(输出缓存)。关于OB缓存可以开启或者关闭。


程序缓存

关于案例的测试注意关闭OB缓存。即在PHP的配置文件中将output_buffering注释掉即可


①案例一


对于上述案例输出100跟200,并没有输出100之后就结束因为有程序缓存存在。当碰到输出的内容时会放入到程序缓存。当页面执行完毕。Apache会进行封包操作然后响应给客户端


②案例二


当执行到第三行时 将具体输出的内容存储到程序缓存中。当执行到第六行时将具体的头信息也放入到程序缓存中并且是在100<br/>后面。当执行到第八行时同样将输出的内容放入到程序缓存中。当页面执行完毕将程序缓存中的数据与Apache提供的默认的响应头进行封包操作。这样就导致了目前响应给客户端的数据的格式不满足http协议的标准。所以报错了。


OB缓存


当代码执行到第四行,开启了OB缓存。当执行到第六行时由于是输出的内容。因此需要优先放入到OB缓存中。当执行到第九行时。对于header放入到程序缓存中。当执行到第十一行时继续将输出的内容放入到OB缓存中。目前页面执行完毕。PHP会自动将OB缓存中的内容刷新到程序缓存中。程序缓存中的内容与Apache提供的默认的响应头进行封包。最后由Apache将结果进行响应。


OB缓存注意事项:

1、OB缓存可以手动的开启或者关闭

2、OB缓存开启时。对于PHP中任何的输出内容优先的放入到OB缓存中。如果碰到header/session/cookie相关会讲具体数据放入到程序缓存中

3、当页面执行完毕PHP会自动的将OB缓存中的内容刷新到程序缓存中。

OB缓存中比较重要的几个函数

ob_start:开启OB缓存

ob_get_contents:获取当前OB缓存中的内容

ob_clean:清空OB缓存中的内容

ob_end_clean:清空OB缓存中的内容并且关闭OB缓存

ob_flush:手动将OB缓存中的内容刷新到程序缓存

ob_end_flush:手动将OB缓存中的内容刷新到程序缓存并且关闭OB缓存

①ob_get_contents


浏览器上输出MySQL、PHP、c/c++ 而在文件中记录mysql

②ob_clean


浏览器上只有c/c++ 文件中对应空

③ob_end_flush


在浏览器上MySQL、PHP、c/c++ 在文件中是空

OB缓存嵌套

当一个PHP文件多次使用ob_start函数那么开启了多个OB缓存区。对于多个OB缓存区他们之间具备一个层次关系。但是对于每一个OB缓存区他们之间相互没有任何影响


对于上述代码 每次执行ob_start都会开启一个OB缓存区。并且每个缓存区之间相互独立











原创粉丝点击