刷新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程序的php代码
Apr 07 PHP
php-accelerator网站加速PHP缓冲的方法
Jul 30 PHP
PHP连接SQLServer2005 的问题解决方法
Jul 19 PHP
php根据分类合并数组的方法实例详解
Nov 06 PHP
smarty自定义函数htmlcheckboxes用法实例
Jan 22 PHP
wordpress安装过程中遇到中文乱码的处理方法
Apr 21 PHP
joomla实现注册用户添加新字段的方法
May 05 PHP
CI(CodeIgniter)框架视图中加载视图的方法
Mar 24 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
Nov 06 PHP
PHP简单实现防止SQL注入的方法
Mar 13 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
Dec 07 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 GD 图像处理组件的常用函数总结
2010/04/28 PHP
PHP $_FILES函数详解
2011/03/09 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
PHP中的正则表达式实例详解
2017/04/25 PHP
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
2012/04/12 Javascript
jQuery 淡出一个图像到另一个图像的实现代码
2013/06/12 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
AngularJS基础 ng-focus 指令简单示例
2016/08/01 Javascript
jQuery遍历节点树方法分析
2016/09/08 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
微信小程序引用公共js里的方法的实例详解
2017/08/17 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
微信小程序之蓝牙的链接
2017/09/26 Javascript
详解微信小程序网络请求接口封装实例
2019/05/02 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
python的numpy模块安装不成功简单解决方法总结
2017/12/23 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
python3实现windows下同名进程监控
2018/06/21 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
Python 解析简单的XML数据
2020/07/24 Python
python如何将图片转换素描画
2020/09/08 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
味多美官网:蛋糕订购,100%使用天然奶油
2017/11/10 全球购物
高级技校毕业生自荐信
2013/11/18 职场文书
最新大学生创业计划书写作攻略
2014/04/02 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
酒店财务部岗位职责
2015/04/14 职场文书
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫