企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### ob缓冲的介绍 - ob缓冲是服务器向客户端响应数据时,存储响应数据的临时空间 - 服务器在向客户端推送数据之前,不是一次性把所有的数据都给客户端(cli模式除外),而是先push到ob缓冲区域,然后在一点一点给客户端,减轻服务器的压力。 ### 开启ob缓冲 - 在php.ini的配置文件中,通过output_buffering参数进行配置 ``` putput_buffering - off: 表示关闭php输出缓冲 - on: 表示打开无限大的输出缓冲 - 4096: 表示打开大小为4096Byte的输出缓冲 ``` - 在程序中动态的开启缓冲功能`ob_start()` - 通过php.ini打开,则作用于所有php页面,使用函数手动打开,则只能作用与当前页面 ### php输出顺序 - 打开ob缓冲:echo,print --> php ob缓冲 --> 服务器缓冲 --> 浏览器缓冲 --> 页面展示 - 关闭ob缓冲:echo,print --> 服务器缓冲 --> 浏览器缓冲 --> 页面展示 ``` ob缓冲的知识点 1. 在服务中,如果我们开启了ob 缓冲,则echo出来的数据首先会放入ob中 2. 当php页面执行到最后,则会把ob缓冲的数据,刷新到服务器的缓冲中,然后通过服务器对数据封装成http响应包,返回给浏览器 3. 如果没有开启ob,所有数据直接发送到服务器缓冲中 ``` ### ob缓冲相关函数 - ob_start() 开启ob缓冲 - ob_clean() 清空缓冲区域 - ob_get_contents() 获取缓冲区域里面的内容 - ob_get_length() 获取缓冲区域的长度 - ob_get_clean() 获取缓冲区域内容,并清空缓冲区域 - ob_flush() 将缓冲区域的内容发送到服务器 - ob_end_flush() 将缓冲区域内容大宋到服务器,并关闭缓冲 - on_end_clean() 清空缓冲区域内容,并关闭缓冲 - ob_implicit_flush(true/false) 函数强制有输入时立即发送到浏览器。 ### 页面静态化 - 数据库缓存减轻了数据库压力,但是服务器的压力还是存在的 - 页面静态化减轻了服务器和数据库的压力 - 使用页面静态化,查询比较频繁,且内容不经常更新的页面。数据经常变化的页面不适合页面静态化 - 关键代码 ``` if(is_file('index.html') && (time() - filemtime('index.html') < 300)) { // 设置缓冲的失效时间,如果静态文件没有失效,则直接输出静态文件 require_once('index.html') } else { // todo 处理数据 ob_start() // 模板文件 requrie_once('template.php') // 将缓冲中的数据,保存在静态文件 file_put_contents('index.html', ob_get_contents()) } ```