刷新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面向对象全攻略 (一) 面向对象基础知识
Sep 30 PHP
php防攻击代码升级版
Dec 29 PHP
PHP安全防范技巧分享
Nov 03 PHP
PHP读取文件并可支持远程文件的代码分享
Oct 03 PHP
在windows服务器开启php的gd库phpinfo中未发现
Jan 13 PHP
php轻松实现中英文混排字符串截取
May 28 PHP
php如何获取文件的扩展名
Oct 28 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
Mar 18 PHP
PHP用户验证和标签推荐的简单使用
Oct 31 PHP
php中输出json对象的值(实现方法)
Mar 07 PHP
PHP分享图片的生成方法
Apr 25 PHP
PHP类的自动加载机制实现方法分析
Jan 10 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 socket方式提交的post详解
2008/07/19 PHP
Session保存到数据库的php类分享
2011/10/24 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
PHP curl 抓取AJAX异步内容示例
2014/09/09 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
用js实现小球的自由移动代码
2013/04/22 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
javascript实现捕捉键盘上按下的键
2015/05/05 Javascript
Window.Open打开窗体和if嵌套代码
2016/04/15 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
vue实现微信分享朋友圈,发送朋友的示例讲解
2018/02/10 Javascript
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
2019/05/22 Javascript
python集合类型用法分析
2015/04/08 Python
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
Python实现的质因式分解算法示例
2018/05/03 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
django 实现电子支付功能的示例代码
2018/07/25 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
python+OpenCV实现图像拼接
2020/03/05 Python
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
电气工程及其自动化学生实习自我鉴定
2013/09/19 职场文书
小区门卫管理制度
2014/01/29 职场文书
中学教师师德承诺书
2014/05/23 职场文书
工程承诺书怎么写
2014/05/24 职场文书
消防标语大全
2014/06/07 职场文书
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
学生检讨书范文
2014/10/30 职场文书
2015年企业工作总结范文
2015/04/28 职场文书
2015年管理人员工作总结
2015/05/13 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
python ConfigParser库的使用及遇到的坑
2022/02/12 Python