静态化页面可以减少服务器的一个负载了, 如果我们同样的一台机器如果有数据库连接只能负载 100IP, 那么用静态 htm 文件估计可以负载 1000IP, 所以我们很多站都是静态化的页面这也是主要的原因了, 下...
静态化页面可以减少服务器的一个负载了, 如果我们同样的一台机器如果有数据库连接只能负载 100IP, 那么用静态 htm 文件估计可以负载 1000IP, 所以我们很多站都是静态化的页面这也是主要的原因了, 下面一看一个关于 php 页面静态化原理与例子.
每一个 web 项目, 在日 PV 量达到十万级或百万级抑或更高时, 你的网站响应速度就决定你的项目是能够继续活下去, 或立马死掉的关键除了升级服务器配置, 优化代码, 优化数据库之外, 另一个技术? 页面静态化, 也是你不得不采用的技术.
我们知道, 页面在输出之前, 会将输出数据暂时存放到 BUFFER(缓冲器) 中, 然后才会输出到页面, 所以, BUFFER 中的数据, 就是你 PHP 代码执行, 并且模板渲染之后, 所生成的静态数据, 即 html 页面, 对于数据更新不是很快, 或者页面信息实时性要求不是很高的时候, 我们可以将 BUFFER 的数据写入到一个 html 文件中, 下次访问时, 直接请求这个 html 页面, 这样, 中间就免去了 PHP 代码执行时间, 数据库数据查询时间以及模板渲染的时间, 对于数据库 I/O 量大的页面, 能很大地提高页面的响应速度.
具体实现如下:
/**
* 这里是你的 PHP 逻辑代码
*$/ 在你页面所有输出内容之前, 开启缓冲器
- ob_start();
- echo 'hello,word!'
- // 当使用 ob_start() 函数之后, 页面不会有输出, 此时, 所有的输出都已经存放在缓存器中
- // 然后我们将缓存器里面的内容拿出来, 存放到一个静态的 Html 文件中
- file_put_contents('index.html',ob_get_contents());// 函数 ob_get_contents() 表示取出当前缓冲器内容;
- // 然后关闭缓冲器并清除缓冲器内容
- ob_end_clean();
/* 这样, 一个静态的 html 文件就生成了, 然后, 需要做的只是判断什么时候该生成 html 文件, 什么时候直接访问 Html 文件
提示: 通过 filemtime() 函数判断 Index.html 文件的上次修改时间和当前时间间隔, 来控制缓存有效期:
*$/ 设置换成有效期为 120 秒
- $cacheTime = '120';
- if(time()-filemtime('index.html')>$cacheTime){
- // 不在缓存有效期, 重新生成缓存文件
- // 这里是你的 PHP 逻辑代码和生成缓存文件的代码
- }else{
- // 在缓存有效期内, 直接调用 index.html 文件
- }
来源: https://www.php1.cn/detail/php-d7994667ed.html