刷新PHP缓冲区为你的站点加速


Posted in PHP onOctober 10, 2015

在当前 PHP 版本的默认配置下,“输出缓冲(Output Buffering)”是被打开的。旧版本则不是这样,在旧版本的 PHP 中,字符串在每次被输出的时候(通过 echo 或 print 函数),都会触发一次发送到客户端浏览器的动作。
“输出缓冲”的引入,使得这一过程更加快速、更加高效。缓冲区实际上是在内存中开辟了一块区域,可以认为是内存中的一个大的字符串。当程序中有字符要输出的时候,会把要输出的内容附加到该缓冲区中,用来替代旧版本 PHP 中每次都直接输出到浏览器的方式。当缓冲区被“刷新”的时候,再统一输入到用户浏览器。以下几种情况下,会引起缓冲区的“刷新”操作:
1、PHP 程序执行完毕;
2、缓存区的大小超过了 php.ini 配置文件中设置的 output_buffering 值;
3、flush() 或者 ob_flush() 函数被调用的时候。
在实际的产品环境下,我们可以通过在 head 标签后马上刷新 PHP 的缓冲区,来达到加速你的站点的目的,示例代码如下:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="UTF-8" /> 
<title>Buffer flushing in action</title> 
<link rel="stylesheet" type="text/css" href="styles.css" /> 
<link rel="shortcut icon" href="favicon.ico" /> 
</head> 
<?php 
// 这里强制刷新缓冲区 
flush(); 
?> 
<body> 
...

接下来来解释上述代码的作用:
当浏览器接收到页面 head 部分的代码的时候,就可以开始下载 head 段中的包括的资源了,类似 CSS 文件、站点收藏图标(Favicon)等。这些内容的下载可以与浏览器接受 body 段的内容时的时间同步进行。
具体能加速多少,需要因地制宜。这取决于很多客观条件,包括服务端的响应速度、你的页面大小、你的 CSS 文件大小和数量、浏览器是否有本地缓存等等。因素固然有很多,不过这样一个小小的优化,就可以显而易见的为你的站点加速,何乐而不为呢?

我很希望各位把这个小技巧运用在自己网站上,并跟踪所产生的实际效果。期待大家的反馈。

PHP 相关文章推荐
用PHP发电子邮件
Oct 09 PHP
php 过滤危险html代码
Jun 29 PHP
php获取后台Job管理的实现代码
Jun 10 PHP
基于php缓存的详解
May 15 PHP
去除php注释和去除空格函数分享
Mar 13 PHP
Linux下PHP连接Oracle数据库
Aug 20 PHP
smarty内置函数foreach用法实例
Jan 22 PHP
php限制ip地址范围的方法
Mar 31 PHP
PHP计算加权平均数的方法
Jul 16 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
Mar 18 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
Aug 17 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
Jul 19 PHP
PHP和Mysql中转UTF8编码问题汇总
Oct 10 #PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
Oct 10 #PHP
PHP内存使用情况如何获取
Oct 10 #PHP
PHP中Session和Cookie是如何操作的
Oct 10 #PHP
PHP中JSON的应用技巧
Oct 10 #PHP
PHP的serialize序列化数据以及JSON格式化数据分析
Oct 10 #PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 #PHP
You might like
PHP防CC攻击实现代码
2011/12/29 PHP
php简单判断两个字符串是否相等的方法
2015/07/13 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
jQuery.getScript加载同域JS的代码
2012/02/13 Javascript
一个基于jquery的文本框记数器
2012/09/19 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
原生js实现网易轮播图效果
2020/04/10 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
vue print.js打印支持Echarts图表操作
2020/11/13 Javascript
[40:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs TNC
2018/04/01 DOTA
Python深入学习之装饰器
2014/08/31 Python
Python实现计算两个时间之间相差天数的方法
2017/05/10 Python
详解python上传文件和字符到PHP服务器
2017/11/24 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
2019/08/07 Python
python手写均值滤波
2020/02/19 Python
python实现简单学生信息管理系统
2020/04/09 Python
使用python检查yaml配置文件是否符合要求
2020/04/09 Python
Python实现疫情地图可视化
2021/02/05 Python
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
Troy-Bilt官网:草坪割草机、吹雪机、分蘖机等
2019/02/19 全球购物
新西兰便宜隐形眼镜购买网站:QUICKLENS New Zealand
2019/03/02 全球购物
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
军训 自我鉴定
2014/02/03 职场文书
幼儿园教师工作感言
2014/02/15 职场文书
财务总经理岗位职责
2014/02/16 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
森马旗舰店双十一营销方案
2014/09/29 职场文书
党的群众路线教育实践活动批评与自我批评范文
2014/10/16 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技