月度归档:2011年06月

【转载】白话BigPipe

所谓BigPipe,指的是Facebook开发的用来改善客户端响应速度的技术。本质上讲,其实它并不是新事物,原理上等同于Yahoo在Best Practices for Speeding Up Your Web Site里提出的Flush the Buffer Early,不过BigPipe的实现更灵活,所以有必要了解一二。

我们平常浏览网页时的体验通常是串行的:浏览器发起请求,服务器收到后渲染页面,在此期间,浏览器除了等待别无选择,演示代码如下:




test




注:代码里用sleep模拟服务端耗时的操作。

如果我们把串行改成并行的方式呢?每当服务器生成新的内容立刻发送给浏览器,浏览器立刻渲染,不必等到接收到全部数据再处理,毫无疑问会提升用户体验,演示代码如下:

需要说明的是代码仅运行于Apache + Mod PHP环境,旧版本Apache可能需要关闭GZip。



test




注:某些浏览器必须接收到一定长度的内容才开始渲染,所以代码里用到了str_pad。

代码里用到ob_flush和flush把页面分块刷新缓存到浏览器,此时如果使用Firebug查看响应头的话,会发现:Transfer-Encoding=chunked,如此一来浏览器就可以实现分块渲染了。

BigPipe在此基础上更进一步,演示代码如下:



test









使用BigPipe,先刷新布局(Layout),然后按块(header,content,footer)刷新相应的Javascript代码,从而实现页面内容的填充。

BigPipe之所以使用Javascript渲染页面,是因为这样一来渲染页面的时候,就不会被块的位置束缚住,如果我们的服务器支持多线程,那么就可以同时处理多块内容,哪块先处理好就把哪块刷新到浏览器,即便不支持多线程,服务器也可以按照内容的重要程度分主次先后渲染,不必拘泥于HTML代码的物理顺序。此外还应注意一下BigPipe和Ajax二者的区别,对于一个分成若干个块的页面而言,如果使用Ajax的话,每一块都需要单独发送一个HTTP请求,而如果使用BigPipe的话,不管有多少块,都仅有一个HTTP请求。所以Ajax对服务器造成的压力会是BigPipe的若干倍。

提醒:BigPipe不利于SEO,应用时可通过User Agent判断请求是人还是搜索引擎,如果是人的话,则应用BigPipe渲染模式,如果是搜索引擎的话,则应用传统渲染模式。

补充:在Nginx + PHP FastCGI环境运行文中的代码,会发现无效,这是缓存造成的。在Nginx FastCGI环境下,如果数据小于fastcgi_buffers,会缓存到内存中,否则如果数据小于fastcgi_max_temp_file_size,会缓存到硬盘上。因为flush是Apache环境下才有效的函数,不适用于Nginx环境,所以唯一的出路就是想办法关闭缓存,可通过实验发现即便把fastcgi_buffers和fastcgi_max_temp_file_size都禁止了,还是没有用,所以说截至目前为止,Nginx + PHP FastCG无法实现BigPipe,相对可行的方法是通过Apache + Mod PHP实现BigPipe,而Nginx则放在代理服务器的角色上,并使用proxy_buffering关闭代理缓存。

参考:Facebook网站的Ajax化、缓存和流水线(PDF)。
来源:http://huoding.com/2011/06/26/88

【转载】高性价比 Ubuntu VPS

现如今,VPS (Virtual Private Server – 虚拟专用服务器) 已越来越成为主流的主机方案了,相比虚拟共享主机而言, VPS 具备更多灵活性及可控性。而且在价格方面,一些低配置的 VPS 方案已经与虚拟共享主机非常接近,甚至于更低。所以对于 Ubuntu 用户来说,如果你想自已建站或更好的学习 Linux 系统管理的话,个人建议购买 VPS 。下面,就介绍几个支持 Ubuntu 的高性价比 VPS 服务商。

( 注:以下介绍中都带有引荐链接 <Referral Link> ,如果你愿意支持本站的话,请点击这些链接进入购买,谢谢!)

  1. PhotonVPS (10% 优惠码 tenoff ): 这家 VPS 商的服务器位于加州洛杉矶机房,前段时间推出了直达国内的线路,所以访问速度比较不错。它提供了 OpenVZ、XEN 及 Hyper-V 等技术架构的 VPS 方案。提供 Ubuntu 8.10 ,9.04 , 10.04 及 10.10 版本,另外还提供 CentOS,Fedora , Gentoo , Debain ,Suse ,SlackWare 等多种 Linux 发行版,比较全面。另外,如果你选 XEN 技术架构的话,还可以安装 FreeBSD , OpenBSD 等 Unix 发行版,这是比较少有的。
    还有就是,这家服务商提供中文 Ticket 服务。同时, 除了支持PayPal 外,还支持支付宝付款。在这里特别提一下,本站就是架设于这家的 VPS 主机上,所以你可以通过访问本站来测试他们的网络速度。
  2. YardVPS : 这家与 PhotonVPS 同属于一家公司,与 PhotonVPS 的差别在于它提供无管理的 VPS 方案,另外支持的 Linux 发行版也相对较少,但支持 Ubuntu 全系列版本,所以在同样配置下价格相对比较更低。特别要说的是,它有一款 128Mb 内存/ 10G 硬盘 /500G 带宽,基于 OpvnVZ 的低价服务器方案,价格为 15美元/ 年,非常适合初学者练手用。它同样支持 PayPal 及支付宝付款方式。
  3. BurstNet : 这是一家比较老牌的 VPS 服务商,国内也有大量用户在用这家的主机。它成立于1996年,被评为美国INC500强企业(即最具成长价值,发展速度最快企业),拥有自己的机房,但 Linux vps 只提供 Openvz 架构的,没有 XEN 的。最便宜的 Linux vps 配置为1G cpu、512Mb 内存、20G 硬盘、1000G 流量和 2 个ip地址,价格仅为 5.95美元,支持 PayPal 付款。它提供 Ubuntu 8.10 到 10.04 各版本,除此之外还提供 CentOS , Debian , Gentoo ,Fedora 等 Linux 发行版。
  4. Linode : 自于美国的专注于提供 Linux VPS 的虚拟服务器提供商, 全部 VPS 方案都是采用 XEN 虚拟技术架设,Linode 共提供了 6 个 VPS 方案,每个方案都提供 4 核 CPU ,一个独立 IP ,完全的 SSH 访问和 root 权限,每个方案之间的差别在于内存、容量及流量方面的不同。最便宜的方案为 Linode 512 ,配置为 512 MB 内存,16G空间,200G,价格为 19.95 美元/每月(相当于人民币 130 左右),支持月付,不过只支持信用卡支付方式,当然你也可以按年或2年购买,这样可以分别节省 10% 及 20%。个人认为 512 这个方案对于跑个人 Blog 已完全够用。详细介绍见这里

PS: 如果你对价格不太在意的话,建议购买用 XEN 技术虚拟的主机,因为在 I/O 读写等性能方面要比采用 OpenVZ 技术的 VPS 更好,同时也不容易超售。另外,如果你也有好的 VPS 推荐的话,请留言。

原文:http://wowubuntu.com/vps.html

什么是庞氏骗局?

最近网络上很流行一个词“庞氏骗局”,不知到失身吗意思?鉴于微薄上没文化的某领导的表现,偶想弄明白什么是庞氏骗局。

名词解释:

庞氏骗局(Ponzi Scheme):是指骗人向虚设的企业投资,以后来投资者的钱作为快速盈利付给最初投资者以诱使更多人上当。庞氏骗局是一种最古老和最常见的投资诈骗,是金字塔骗局的变体。

1917年,查尔斯·庞齐(Charles Ponzi)注意到第一次世界大战给各国的经济带来的混乱。他移居波士顿开设了一家“证券交易公司”,向外宣称该公司将从西班牙购入法、德两国的国际回邮优待券,加上一定的利润转手以美元卖给美国邮政局,以此赚取美元与战后货币严重贬值的法德两国货币的“价差”。事实上这个计划根本赚不到钱,但还是有些人冲着一个半月内能获得50%的回报率去尝试投资,让那些初期投资者狂喜的是,他们如期获得了红利。因为庞齐把新投资者的钱作为快速盈利付给最初投资的人。由于获得了难以置信的赢利,这一 “消息”大范围扩散开去,庞齐在几个月内吸引了数万名投资者,累积获得投资超过1500万美元。后来当波士顿媒体的报道造成新投资者对公司的质疑和观望,使公司没有新的资金来源去支付先期投资者的利息时,庞齐关掉店门,带着约4万名投资人的毕生积蓄逃之夭夭。后人称之为“庞氏骗局”。

命令行中直接执行php代码

有时候,我们可能需要快速的验证一段PHP代码是否正确,此时如果去写一个PHP文件,再跑到浏览器那里运行,是不是效率太低了。

其实如果代码比较短,急需验证结果时,可以使用命令行的方式。

在linux中的终端中输入:

php -r 'echo 0500;'

前提是你要配置好自己的PHP命令行运行环境。这样是不是可以很方便的验证一些短代码的效果啊。