php纯静态化技术之ob缓存详解
Posted PHP技术拓展
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php纯静态化技术之ob缓存详解相关的知识,希望对你有一定的参考价值。
重点:
php程序执行完毕会把相关的静态内容先输出到“php缓冲区[内存级]”里边,然后在输出给用户浏览器供访问。通过ob_XXX相关的函数可以把该 缓冲区 的内容给获得出来,并存储到一个文件里边即可。如果通过ob相关函数清除了php缓存区内容,则页面无输出。
1. 什么是静态化
php语言是动态语言
html/css/js 称为静态语言
把“动态语言”变为“静态语言”的过程就是“静态化”。
静态化使用场合:新闻页面、文章等宣传性的页面适合做静态化
2. 为什么使用静态化
① 节省php、mysql相关的服务器资源
② 加快用户的请求
③ 各种seo搜索引擎更喜欢收录静态页面(提升网站的知名度)
3. 静态化原理
php程序执行完毕会把相关的静态内容先输出到“php缓冲区[内存级]”里边,然后在输出给用户浏览器供访问。通过ob_XXX相关的函数可以把该 缓冲区 的内容给获得出来,并存储到一个文件里边即可。
示例:
php代码写一段动态代码
用户浏览器输出:
从缓存区中提取的html静态文件:
下面我们写完文件之后清除ob缓存区的内容,发现,hmtl文件还是可以写入对应文件,而用户页面输出什么都没有,所以,php生成的静态代码先进入缓存区,在输出给用户浏览器。
4.ob缓存相关函数:
开启缓冲
ob_start() 开启多个/php.ini
php.ini中,指定字节数就是开始,给定off就是关闭ob缓存
获取内容:
ob_get_contents(); //获取
ob_get_clean(); //获取后清空
ob_get_flush(); //获取刷新
(flush:把php缓冲区内容给弄出来提供给用户浏览器显示,不使用flush内容最后也会从php缓冲区里边自然输出提供给用户)
清空
ob_clean() //删除缓冲区内容
ob_get_clean(); //获取并删除缓冲区内容
ob_end_clean(); //清空并关闭缓冲区
刷新
ob_flush() //数据向下推送
ob_get_flush(); //获取内容并推送内容
ob_end_flush(); //推送内容并关闭缓冲区
(没有调用flush时,每个php脚本结束后会自动flush刷新输出给用户)
关闭
ob_end_clean(); //清空关闭
ob_end_flush(); //刷新关闭
5.案例应用(简单说明)
添加商品的同时就该商品制作一个静态页面,之后前台来访问该页面。访问商品详情页的时候就不需要经过php、数据库,直接访问静态页面即可。
1.后台添加商品是生成对应的商品detail展示静态文件。
步骤:
(1)开启php缓冲区
(2)查询商品信息并传递给模板
(3)展示前台商品详情页面
(4)收集内容、并制作静态文件
(5)删除php缓冲区内容并关闭缓冲区(删除缓存区则不会输出显示)
2.前台访问直接调用静态页面
之前是点击直接调用php访问数据库生成,现在直接调用静态页面文件即可。(smarty引擎)
6.局部不静态化
上面的应用直接将所有的文件都进行了静态化,但在实际应用中还有一小部分动态信息不能使用静态化,如:当前登录者的信息等等,这时候我们就要使用局部不静态化来获取。
使用ajax对局部不静态的数据进行请求获取,并追加到页面上。
简单示例(示意):
7.说明
header()/session_start()/setcookie()等函数进行使用的时候前边不能有输出信息,否则报错。如果三个函数使用之前必须有输出。解决:把php缓冲区打开即可。
以上是关于php纯静态化技术之ob缓存详解的主要内容,如果未能解决你的问题,请参考以下文章