刷新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(3)
Oct 09 PHP
用Apache反向代理设置对外的WWW和文件服务器
Oct 09 PHP
用PHP 4.2书写安全的脚本
Oct 09 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
Oct 30 PHP
php修改上传图片尺寸的方法
Apr 14 PHP
php文件上传的两种实现方法
Apr 04 PHP
详谈phpAdmin修改密码后拒绝访问的问题
Apr 03 PHP
利用php-cli和任务计划实现订单同步功能的方法
May 03 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
php菜单/评论数据递归分级算法的实现方法
Aug 01 PHP
PHP命名空间用法实例分析
Sep 04 PHP
laravel 出现command not found问题的解决方案
Oct 23 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
超外差式晶体管收音机的组装与统调
2021/03/01 无线电
php代码把全角数字转为半角数字
2007/12/10 PHP
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
2010/06/03 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
2020/07/10 PHP
jquery datepicker参数介绍和示例
2014/04/15 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
一道JS前端闭包面试题解析
2015/12/25 Javascript
Bootstrap风格的WPF样式
2016/12/07 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
js实现横向拖拽导航条功能
2017/02/17 Javascript
JavaScript面向对象精要(上部)
2017/09/12 Javascript
VueJs使用Amaze ui调整列表和内容页面
2017/11/30 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
js实现京东秒杀倒计时功能
2019/01/21 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
Python获取linux主机ip的简单实现方法
2016/04/18 Python
python将ansible配置转为json格式实例代码
2017/05/15 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
wxPython实现文本框基础组件
2019/11/18 Python
对python中list的五种查找方法说明
2020/07/13 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
2021/03/03 Python
如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
2019/08/01 HTML / CSS
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
通信工程专业个人找工作求职信范文
2013/09/21 职场文书
幼儿园中班教师寄语
2014/04/03 职场文书
绘画专业自荐信
2014/07/04 职场文书
超市店庆活动方案
2014/08/31 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
期末复习计划
2015/01/19 职场文书
学校食堂食品安全承诺书
2015/04/29 职场文书
法制工作总结2015
2015/07/23 职场文书