Loving PHP Living PHP Happying PHP
做一个吝啬的PHPer(上)
上一篇 /
下一篇 2006-11-29 23:15:01
/ 个人分类:PHP
做一个吝啬的PHPer(上)
--我们把用户当“过客”,而不是“朋友”
hosander @ phpchina.com
首先解释下本文的标题。这里我选择“吝啬”作为主体并不是特意地吸引眼球,而是我难以找到一个更合适的词汇来修饰了。为什么要用“吝啬”这个词汇呢。这个还是从B/S架构的Web应用的思想出发的。从Tim Berners-Lee发明了SGML的一个子集,也就是超文本标记语言开始,基于HTML的资源共享的技术就是想让人们使用更加简单。然后,Lee又发明了第一个Web浏览器(名叫WorldWideWeb)。浏览器的出现使得HTML作为数据的载体真正被大家接受并广泛流行起来。引入这段历史,只是为了支持我在此要说明的一个观点,那就是Web应用从一开始就是以简单才让大家喜欢的。所以为了保持这个概念,PHPer应该是一个很吝啬的程序员。
那PHPer应该如何吝啬呢,简而言之就是PHPer控制的是服务器来为用户提供服务。而每一次用户访问服务器就是一次对话的过程了。也就是存在着互通与交流,简单来说就是对话。因此,我们可以引出对于“过客”和“朋友”而言对话的内容是不一样的这样的概念了。形象来说就是每次用户访问服务器的时候,我们把握的驻足的时间问题。假设我们是店老板,那么对待过客,只需要简单的问候几句就可以了,但是对于朋友呢,我们就要嘘寒问暖地多聊几句了。可能有些人已经猜到了,这里我要表达的意思就是,尽量每个过客呆的时间不要过长。
具体地说,我们希望每次用户访问的时候服务器资源的消耗是越少越好,也就是说一个PHPer在管理服务器的资源的时候,应该尽量成为一个吝啬的管家。
这里就需要在讨论一个问题了,就是关于PHP开发来说是性能重要还是开发效率重要。我也遇到过有些PHPer说我过分强调性能了,会明显地减缓开发的速度。这里我想从两个方面来阐述这个事情,因为我觉得这点确实太重要了。如果大家觉得我说的在一定条件下还有道理再看如何成为“吝啬的”PHPer不迟。J
为了要这么重视性能,并且要具备“吝啬的”意识。
第一,随着Web2.0的流行,许多的公司都已经意识到流量以及用户的重要性了,而从技术出发来说,在内容以后能够对服务器做的优化就是速度了。在目前,网站竞争如此激烈的时代,速度有时候能够决定很多事情。可能,有些人认为我可以从硬件上入手啊!是啊,随着硬件的发展,现在的程序员写代码(包括我自己)都经常会忽略硬件成本消耗的问题。回顾下早期的程序员,为什么他们写的程序如此精悍小巧呢?我想很大一部分原因是被逼出来的,因为在内存只有64K的时代,你能写出什么样的程序呢?我想大家很容易明白了。
那么现在硬件的环境如此优厚,难道我们还要注意这些问题吗?答案是我们需要,至少在Web开发领域是这样的。这里要讨论下我给学员上课的时候经常问到的一个问题,开发服务器上面运行的软件和开发桌面软件最大的不同是什么呢?许多人说他从来没有考虑这个问题。我说很简单,服务器上面运行的软件最难的地方就在于稳定性和快速。它们有两个本质上的不同:第一,服务器上面运行的软件需要为很多用户同时提供服务,所以它要有很强的自适应功能,能够快速地从错误恢复过来的能力。第二,也是最重要的一点是,服务器上面运行的软件不可能经常重启。桌面软件如果使用超过10个小时,用户就可以承受重起计算机的操作,但是服务器不行!你能跟用户说:“稍等,我重启下”吗?
总之呢,现在只要是懂得互联网的投资人或者老板都会问,我们的网站快吗?
第二,追求速度真的会降低开发速度吗?这个可能从多个角度分析,从最直接的角度分析,好像是的。因为,你为了追求速度,肯定要求代码的高质量,所以会让程序员在编写代码的时候倍加艰辛。其实不然,因为你错误地理解PHP了,PHP本身的运行速度是非常快的,所以10行代码压缩到5行代码,对于PHP项目本身来说并没有什么意义。因为你可能只是把原来运行过程里面1%部分的压缩大0.5%了。也就是说你让整个PHP项目的速度从100%变为99.5%。因此这个是没有意思的,反而会大幅度地增加开发成本。为什么会这样呢,因为你在做的是网络编程(Network Programming)。所以这个地方你注重的不是代码的质量,而是整个项目的规划问题了。只有处理好规划问题,才能良好地解决既实现速度又保证功能的问题。
网络编程的概念是我接触ZCE(Zend Certification Education)培训的时候接触到的。原来我对这个一点概念都没有,现在终于明白网络编程的真正含义。如果没有理解网络编程的真正含义,你就没有真正入门动态网页编程。
最后有一点,我听过一家互联网公司说的这样的一句话:如果做软件,我们就用Java,如果做网站我们就用PHP。我问为什么,答曰,快啊!
如果上面对于为什么要注重性能的阐述(不想写太罗嗦,所以很多概念没有解释),没有让你100%反对的话,欢迎你和我一起探讨如何成为“吝啬的”PHPer。在下篇中,我们将通过以下几个概念来阐述:
l 如何对待我们的用户,“过客”
l 网络编程的流程处理
l AJAX的讨论
l 网站升级性--如何处理网站随着用户的增多的系统升级
导入论坛
收藏
分享给好友
管理
举报
TAG:
PHP
ajax
Ajax
php
性能