技巧:PHP的优化,缓冲,压缩实际的解决方案

本文提出了实用的PHP的优化,缓冲,压缩实际的解决方案。

作为流行的 Web 编程语言, PHP 的最大优势就是速度。 PHP4 已经在这方面做的非常好了,你几乎找不到比它更快的脚本编程语言了。但是如果你的应用负荷很大,而带宽又比较小,或者有其他的瓶颈影响你的服务器性能,那么,你不妨试试笔者为你开出的几个药方,看看是否灵验。

一、代码优化

一谈到代码优化,或许你想到的就是整齐明了的代码,但是本文的意思却不是在此,因为如果要寻求速度的话,就要对PHP 源码作相应的调整。一般说来就是去掉多余的注释,让代码不可读。但是这对于一个具有良好素养的程序员来说,简直就是不可思议的。好在Zend Technologies 公司发布了 Zend 优化引擎可以帮助你做到这一点。它现在是免费的,但是你必须遵循 Zend Optimizer 许可。这个产品可以对引擎产生的中间代码进行优化。

安装这个引擎比较简单,下载对应平台的版本以后,解开压缩文件,然后在 php.ini 文件里面加上下面两行,重新启动 Web 服务器,就搞定了。

zend_optimizer.optimization_level=15
zend_extension="/path/to/ZendOptimizer.so"
zend_loader.enable=Off

如果是 Win32 平台的话就应该是:

zend_optimizer.optimization_level=15
zend_extension_ts="C:\path\to\ZendOptimizer.dll"
zend_loader.enable=Off

啊!没有搞错吧?怎么是三行?其实第三行是可选的。因为看起来把 zend_loader 关掉能提高一点速度,因此值得把这第三行放到 php.ini 。需要注意的是,关掉的前提条件是你没有在使用 Zend 加密程序。

二、缓冲

如果想要更进一步提升速度,我们就需要考虑采用缓冲技术了。有一些可选的解决方案,包括 Zend Cache (测试版本), APC, 以及 Afterburner Cache,另外还有 jpCache 等。

以上这些都是属于缓冲模块,他们把第一次对 .php 文件请求产生的中间代码存储在 Web 服务器的内存中,然后对以后的请求返回“编译好”的版本。因为这样减少了磁盘读写,而且都在内存工作,所以这个过程能显著提升应用性能,

现成的这类产品比较多,到底选择谁呢?

Zend Cache 是一款不错的商业产品,在第一次加载那些很大的 PHP 页面后,你会明显感受到速度的提升,服务器会留出更多的资源。可惜这个产品是要花银子的,但是在有些情形下,你可不要吝啬这些银子。

Afterburner Cache 是 Bware Technologies 的产品,目前还处于 Beta 版本,看起来似乎和 Zend Cashe 一样,但是它不能达到 Zend Cache 那样好的效果,也不能和 Zend 优化引擎一起工作,但是它是免费的,所以我采用了这个模块。

APC (Alternative PHP Cache) 是 Community Connect 发布的又一个免费模块,看起来似乎可以用于生产环境了。

三、Web 内容压缩

对于日益拥挤的网络来说,节约带宽就像节约用水一样是十分值得提倡的。根据IETF 标准,大多数浏览器应该支持使用 gzip 压缩的内容。也就是说你可以把用 gzip 压缩的内容发送给浏览器,浏览器会透明的解压数据。

mod_gzip 是 Remote Communications 公司推出的免费 Apache 模块,能把静态的Web 内容压缩后发送给浏览器。对于大多数静态网页来说,这个模块十分合适。尽管

Remotecommunications 公司的人说这个模块支持所有那些 mod_php, mod_perl,mod 什么产生的动态内容,但是看起来还是不能工作,从 mod_gzip 的邮件列表来看,这个问题估计要到1.3.14.6f 才能解决。

如果要压缩动态内容的话,我们可以采用class.gzip_encode.php,一个在脚本开始和结束时使用的 PHP 类。对整个网站来说就是在 php.ini 的 auto_prepend 和 auto_append 中调用其中的函数。详细你可以阅读这个类的程序,这个程序注释得很好,作者几乎把什么都告诉你了。不过使用之前,你的 PHP 要编译为支持 zlib。

对于 PHP 4.0.4 来说,一个新的解决方案就是使用 ob_gzhandler,能达到和上面的类一样的效果,只要简单的在 php.ini 加入下面这句话就可以了:

output_handler = ob_gzhandler ;

这能让 PHP 激活输出缓冲,并压缩所有输出。如果有什么特殊的理由不想让所有的内容都压缩输出的话,可以采用在 .htaccess 文件中加入下面的行,对对应目录下的文件进行压缩。

php_value output_handler ob_gzhandler

也可以直接在 PHP 代码中加入:

ob_start("ob_gzhandler");

这项压缩技术十分有效,但是对 Netscape Communicator 用户来说,因为不能压缩图形文件,所以看上去没有完姆⑺停虼吮匦牍乇斩?jpeg 和 gif 文件的压缩,IE 没有这个问题。

结论:

采用本文所讨论的技术应该能改善你的网站性能,但是需要注意的是:

- PHP 可能不是导致瓶颈的原因,仔细检查其他原因(例如:数据库)

- 你不可能把服务器性能调节到最高状态。因此在埋怨 PHP 及其缓冲之前,考虑是否该升级服务器了,或者采用动态负载平衡技术(那可是一大笔银子哦)。

- 不要低估内容压缩,在你 100 Mb 的内部网上面看到 PHP 应用的速度提升时,不要忘记使用调制解调器的用户在哪里埋怨你的 100Kb 的 HTML 页面。

时间: 2025-01-01 07:50:01

技巧:PHP的优化,缓冲,压缩实际的解决方案的相关文章

图片处理技巧教程:PS优化图片的15个技巧

图片处理无需大量的图层.如果使用合适的智能对象甚至可以将图片的处理优化在15个图层内.那么现在,让我们一起来学习一下处理图片常用的10个技巧. 1. 将图层转化为智能对象 智能对象作为一种最重要的无损编辑技巧,但并没有得到广泛的使用,这是很令人奇怪的事情.智能对象也属于图层,但更灵巧一些,不同于普通图层,智能对象的作用包括: 无损变换.可以随意的缩放.旋转.扭曲多次,但不会降低原图的质量.例如,你将图片缩小后又决定将其恢复原始大小,这个过程不会破坏图片的质量. 无损滤镜.当你为智能对象使用滤镜时

XP技巧连载之优化一句话秘技放送

技巧|优化 Windows XP是目前使用得最多的操作系统,为此书虫将自己在这几年使用Windows XP的经验汇总成连载奉献给大家.条条力求精炼,实用.今天送出的是大家都比较关心的Windows XP优化技巧.由于文章较长,因此我们分为上中下三部分送出.这是第一部分. 让"开始"菜单提速 在使用Windows XP的"开始"菜单时,会发现其显示速度似乎有些偏慢,如果想让它快一点,请打开"注册表编辑器",找到[HKEY_CURRENT_USER\

技巧:最大限度优化你的Asp程序的性能

程序|技巧|性能|优化 ASP 能快速执行你的动态网页,但你还可以通过紧缩代码和数据库连接以使它们执行更快.这是一篇关于怎样精简代码和Asp 特征以获得最快执行速度的详细文章.对于一个急燥的用户来说,任何在按下用户按钮到结果出现在它们的屏幕之间的延迟可能意味着它们会转到浏览其它的站点?假如你的是商业站点,这有可能意味着失去潜在的销售. 我们没有任何办法控制用户的带宽,但我们的确能通过优化Asp 站点来获得最佳的性能.大部分潜在性能的提升是通过系统改变而不是紧缩代码,一个不合适的想法是,一旦遇到系

搜索框设计技巧分享 帮助优化网站性能

在浏览整个网站中,搜索框通常是通向用户使用的最后一道关卡.如果你的网站内容很多,包含了详尽的特色,功能,设计元素,产品和服务等等,那么搜索框就成为了网站不可或缺的一部分.网站的成长往往需要时间.当然,从整个网站设计和开发过程来看,设计肯定要简洁,有文章和评论,以及非正式的网站通知,特色内容和服务等等.不过,随着网站层次不断提升和更新,与网站相关的内容的只是起到了装饰作用.因此,搜索框对网站的性能优化起到了至关重要的作用.   优质的职能和运作对网站开发确实很重要,但与此同时,我们也不可忽视网站的

【大数据技巧】MaxCompute优化去重计算的性能

免费开通大数据服务:https://www.aliyun.com/product/odps 转载自dachuan 随着双十一数据量的暴增,之前用distinct去重可以简单处理的场景,现在消耗的时间成倍增长.如果用了multiple distinct,那就更要警惕,因为多重去重本身会带来数据量的成倍增长,很可能10分钟的任务,在双十一期间会跑上几个小时都没有结果. 这里介绍一个小技巧,其实在稳定性手册里面已经有过介绍,不过总感觉没有看懂.最近正好做了一次优化,于是在这里小结一下: 例如原来的代码

SEO文章写作技巧与内容优化

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 有效的写高质量的原创文章,不但适合用户浏览阅读,也适合搜索引擎的蜘蛛,让这些文章能够提升自己网站的搜索引擎排名,要想做到这一点就需要一定的技巧,并且如何优化不会被搜索引擎惩罚也至关重要. 内容是网站建设的基本,但是在国内的互联网原创性的内容很少,基本都是转载.采集.复制粘贴而来的,厦门SEO在行业里面,一直强调原创文章的重要,并且我们自己也在

提高PHP性能的编码技巧以及性能优化详细解析_php技巧

0.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这 么做,它是 一种可以把多个字符串当作参数的"函数"(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号). 1.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍. 2.$row['id'] 的速度是$row[id]的7倍. 3.echo 比 print 快,并且使用echo的多重参数(译注:

博客优化技巧分析 如何有效优化博客

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 昨天看到matt cutts更新了一篇2007年写的关于博客优化的技巧,如果没有看标题,完全感受不到时差,因为这些技巧直到现在我们仍然在使用,有点震惊,但是同样的每天还是会有很多人加入到这个行业,也要重头学这些东西,我把他分享出来,让更多的人看到google工程师matt cutts早在两年前就发表的关于博客优化技巧! Matt列举他正在使用

测试网站的技巧工具箱 如何优化网页转化率?(上篇)

中介交易 SEO诊断 淘宝客 云主机 技术大厅 --–Facebook.Twitter 及Quora 用户增长团队的产品大牛Andy Johns倾情奉献纯干货--- 提要:千万不要将所有建议照单全收,做出一个四不像网站.你应该将此看作测试网站的技巧工具箱,了解对你的产品与用户而言使用这些技巧的优点与缺点何在,以及如何使它们符合你的宏观产品愿景. "优化注册转化率"这个话题可以扯出一本百科全书的篇幅来.因此我会花大量笔墨来阐述.在此先提醒你们,这将是一篇长文..(译者注:差不多等于一章书