??xml version="1.0" encoding="utf-8" standalone="yes"?> 我们下面来看看IE发出的请求headersQ我们可以看到类似的 假设当今L的每U浏览器都支持gzip和deflate~码(那些不支持的也不会发?code>Accept-Encoding)Q我们可以简单的修改一下网站服务器Q从而返回压~内容到q些览器上Qƈq回标准Q也是没有压羃的)内容到其他的览器上。在下例中,如果我们的浏览器告诉Google它不接受内容~码Q我们会取回3,358字节的数据;如果我们发出 图一: Google压羃 / 非压~对?/strong> 上例中,虽然文g不大Q但是效果依然很明显—压~后比原来小?4%。再加上我们前面两部分谈到的HTML、CSS、和JavaScript代码优化QGoogle在提升网站性能上的成果非常惊h—它的一个网居然可以放在一个TCP响应包里?/p>
?
然Google在带宽上的考虑也远q超出其他一般的|站QHTTP内容~码q一步让HTML、CSS、和JavaScript{瘦w?0%甚至更多。不?
的地ҎQHTTP内容~码Q词?#8216;压羃’?#8216;内容~码’在本文中基本上是一个意思)
基本上针Ҏ本内容很有效Q对于图像和其他二进制文件的压羃效果׃般了Q有时可能根本没有效果,但ȝ来说Q即使有很多二进制文件的时候,整体上可以瘦
w?5%?0%那么多?/p>
HTTP内容~码的服务器端支?/strong> 如果你现在认同HTTP压羃?
价|下一个大问题是:你如何来实施Q在Apache|站服务器上Q可以用mod_deflate来进行HTTP内容的编码。在微Y的IIS上,有?
ȝ了。虽然IIS
5可以支持gzip的编码压~,但实施v来还是超U麻烦,其考虑到因为各U浏览器中细微差异来q行各种l致参数调整的时候。所以在IIS
5上,q是要考虑W三方的采用ISAPIqo器的压羃插gQ比?a >httpZip 服务器内容编码的实质 ?
实施HTTP压羃Ӟ要^衡考虑一些因素;如果服务器配置?#8216;输出’的内容压~方式,虽然可以降低带宽的用,但同时却增加了CPU的开销。多数情?
下,q不是什么大问题Q尤其当|站服务器所作工作很的时候。不q,在网l浏览很J重的网站服务器上,q行相当多的动态内容就可能会达到CPU工作的极
限,q时再进而进行压~的话,CPU可能会超负荷q行了。通过d而外的服务器g资源Q当然可能会减轻q种问题Qƈ让我们n受通过压羃而节省下来的?
宽, 但最后带宽和CPU的问题还是要看哪个成本更高?/p>
说到底,pȝ理员和|站开发者是否对HTTP的压~有兴趣Q还是要看最
后的效果如何。当我们明显的发现带宽的负蝲下来了,那么讉K者也可能会明显感觉{载网늚速度慢了。因为,压羃产生和解压羃会带来的CPU负蝲Q?
TTFB (time to first
byte)也通常会增加,q样览器渲染网늚速度也会降下来,但这q算是很好的qQ因为数据压~后传输的包变小了、变了Q提交的速度会变快,q个?
速回补偿|页渲染的慢速。然而,对于宽带用户来说Q这L改善可能׃明显了。不q,q两U情况下Q对于网站徏设者来_都可以节省一些网l上的投资。当
Ӟ如果可感知的反应旉Ҏ|站来说是主要目标,q且|站的访问者很多都q用拨号上|,那么本文的第二部分钟所讲的~冲控制是比较好的性能提高{?
略?/p>
最后,HTTP内容~码的另一个潜在问题是和由脚本产生的网带来的服务器负载有关的Q比如PHP和ASP。在此种情况下,
主要的问题是Q网内Ҏơ请求可能会被再压羃Q这样就会给服务器增加更多的负蝲Q相对压~静态内Ҏ_。如果,|站中所有的|页都是在请求时生成?
话,那么使用HTTP内容~码得格外心了。还好,很多商业上用的压羃插gQ直到如何对内容q行~冲Q但业余Q较便宜的)的压~工具可能就没有q些?
性了?/p>
动态网:立即生成Q还是稍后生成? 有趣的是Q很多的开发者都是在|站被访问时开
始动态的生成很多甚至全部他们|站的网c比如,http://www.domain.com/article.php?id=5是一个通用的URLQ?
它暗CZ某个|页是由数据库查询时或填充模版生成的。这U常用方法的问题是,在很多情况下Q在h旉生成一个网|pointless的,因ؓ很多时?
q个主要的静态的Q所谓的静态的动态网c或脚本|页Q,其内容很长时间也不变化,q显然对于提高网装载速度没有什么帮助。实际上Q在一个高负荷的网?
q种方式会严重的降低服务期的性能?/p>
要避免不必要的动态网늚生成Q有一个方法是Q每ơ有变化Ӟ则预先生成有内容的静?
html|页。如果这些生成的.html|页Q还是经q了代码优化Q在本文W一部分中过q些描述ҎQ,则更好。这不仅会让服务器交付这些网|快变得更
ҎQ而且q些技术还会搜烦引擎更友好?/p>
不幸的是Q在很多情况下,单的生成动态的HTML|页q不太容易,也ؓ很多|页只有
在网被讉K时才能够正确的生成动态内宏V在q种情况下,你最好是对网进?#8216;烘焙’生成快速执行的形式。在ASP
.NET的情况下Q这UŞ式则是二q制代码Q在服务器端执行的特别快。不好的地方是,在用戯问之前,服务器需要先执行q些|页强制执行q些字节代码。还
好,在ASP .NET 2.0中,q些问题得到改善。在PHP中,一些诸如Zend{的优化软g是不错的投资?/p>
对于提交静?
和动态网c或者HTML和图像的不同需要来_考虑一下针对物理服务器或其他的g上的加速可能,也是比较明智的选择。ؓ了网加速而加强硬件方面的?
入的另一个方法是专业化—不同的部gq行不同的工作,q样产生出最大的效率。虽Ӟ本文是从代码和网站服务器校对来说明如何提高网站的性能的,我们也不?
讨论讨论其他相关的元素?/p>
对网站服务器q行涡轮增压 加速网站要考虑的一个重Ҏ服务器Y
件和服务器硬件。先谈YӞ|站pȝ理员不太可能来回因为易用性问题、性能问题、安全问题等在Apache和IIS之间切换来切换去。简a之,|站服务
器和其底层的操作pȝ之间的关p错l复杂、互相媄响,再进行系l或服务q移则更是繁重且有风险的工作。所以,你如果真的考虑攑ּ一U网站服务器而用另一
U的话,你必M肃认真的好好考虑q个问题Q而如果速度是考虑的第一要素的话Q徏议你考虑一下Zeus?/p>
再谈gQ如果要考虑?
U硬Ӟ则先仔细分析一下服务器上的主要d。在静态网站上Q主要的工作是调整网l连接和把文件从盘拯到网l上。要加速这L型的|站Q你得把注意?
攑֜高速硬盘子pȝ和高速网l子pȝ上,另外q得有够多的内存来处理q发h。实际上Q你可能得给服务器添加大量的内存Q从而ؓl常使用的对象尽可能?
增加内存~冲来减ȝ盘的存取。有的是,CPU的速度在这里却不是十分关键。虽然不能否认CPU对网站的整体性能有媄响,但瓶颈主要发生在盘上。但
是,当网站处理动态网和静态网差不多一样多的时候,处理器就昑־很关键了Q但即便如此高速磁盘或双网卡还是更有效一些。另一U情况下Q除了要处理动?
|页Q还要处理其他占用CPU的操作(比如SSL和HTTP压羃{)的时候,CPU显得十分关键了。换句话_要加速网站服务时Q服务器具体所作的工作
军_着什么类型的g资源更需要增强?/p>
当你没有那么多增加服务器g或Y件的预算Ӟq有一些物h廉的解决Ҏ。比如,你可?
Ҏ务器的TCP/IP讄q行优化Q这样依赖TCP/IP|络的HTTP便可以最优运行。TCP/IP的设|优化里Q有一ҎTCP的接受窗口,可以?
它调整成最适合应用或者最适合|络q接的,或者是针对保TCPq接的一些参敎ͼ如ACK或TCP_NODELAY{)q行调整Q根据具体情况设|成使用
或不使用。还有一些参敎ͼ比如TIME_WAIT旉{,也是可以q行调整的。但要记住,不管怎么调整q些|站服务或操作系l的参数Q都必须q行真实的加
载试验以验证你的调整会不会反而减慢用戯问的服务或带来新的问题。此外,一定要弄懂q些参数之后Q再q行调整?/p>
通过分工q行加?/strong> |站加速还可以考虑的一个出发点是,不同的网站内容可能会拥有不同的提交特性。考虑C同的内容Q其Ҏ也不同Q我们可以用多个服务器,每个服务器来执行不同的内容处理,q样可能比用服务器池Qserver farmQ中的每一个服务来处理同样的Q务要好得多?/p>
?
们来看一个分工进行加速的单例子。当你的商务|站l购物R或外部网使用SSL加密的时候,你会发现当有多个用户同时讉K的时候,SSL加密带来
HTTPSD늚明显负蝲会你的服务器的性能会急剧下降。这U情况下Q把量分配l另一台服务器Q其意义十分明显了。比如,把你的主站点攑֜
www.domain.com上,把结账的处理部分攑֜shop.domain.com上。这个shop.domain.com是一个专门处理SSL?
量的服务器,可能会用到SSL加速卡。采取分工的方式Q可以让你专心处理结账的用户的SSL量Q而不至于像以往SSL的处理会D服务器整体性能的下
降。对于图像和其他重量U的二进制的比如PDF文档?exe文档Q服务器处理其下载可能要׃力气Q这些连接通常持箋的时间比一般的q接都长Q会消耗大
量宝늚TCP/IP资源。进而,对于q些媒体资源(PDF?exe、图像等)的处理,我们也ƈ不需要把它们和文本资源(HTML、CSS?
JavaScript{){同对待处理。在q种情况下,让处理文本资源的服务器有高性能的CPUQ让处理媒体资源的服务器有大带宽Q是有的攄的解决之
道?/p>
分工q可以进一步应用到|页的生成上。我们可以考虑把生成网늚工作单独攑֜一个服务器上,把处理静态内容的工作攑֜另一?
服务器上。现在已然有很多|站是采取这L模式了,q其中很多网站会使用一个叫做Squid的反向代理(reverse
proxyQ。在讄q程中,代理服务器专门提供静态的内容Q速度很快Q而后台的服务器则可以专心处理在访问时才会产生的动态内宏V缓冲控制策略和规则Q?
我们在第二部分中谈到q,在这时的讄q程中就昑־十分重要了;我们得确保代理服务器的缓冲中储存的内容在׃n~冲中是安全的?/p>
Z争夺市场而提?/strong> ?
们刚才谈的那些东西主要是一些低成本的加速技术,在我们本文即结束的时候,我们来看看一些需要Yg成本很高但收益可观的Ҏ。目前市Z提供有一些需
要花些钱的独特加速设备,它们可以q行比如|络q接分流、压~、缓册Ӏ和其他{技术,从而达到加速的目的?
如果你不在乎投资高带宽的话,q些解决Ҏ十分有效,但是大多数的|站q是更喜Ƣ我们先前介l过的物h廉的ҎQ比如代码优化、缓册Ӏ和HTTP~码
{?/p>
q你有很多资金Q可以投资一个服务器池(server
farmQ、ƈd最高档的加速设备,也用压~和~冲技术等Q但你还是会最后达C个极限。要惌一步再提速,q有最后一招:把内Ҏ在离讉K者最q的
地方Q有可能的话Q在那个地方再实施上q各cL术(如压~、缓冲等Q。你肯定注意q,有些|站提供镜像服务器等Q这样世界各地的讉K者就可以p讉K所需
内容。不q,q有比这个更有地理分布意义的ҎQƈ且可以透明的让讉K者用。内容分发网l(Content Distribution
Network –
CDNQ,比如AkamaiQ就可以让我们把重型内容Q如图象和其他二q制内容{)搬移到离讉K者更q的地方Q这样通过内容分发|站在世界各地的边缘~?
Ԍ讉K者访问v来就会更快。这U方式带来了性能上极大提高,目前世界U的一些大|站都在使用。虽然这不上是l济实用的方法,但作些方法的最后补
充,攑֜q里以飨读者?/p>
Joe Lima 是Port80软g公司的首席构架师(architect)Q同时教授UCSD 扩展的服务器技术?/p>
Port80软g公司
]]>?
会被服务器用刎ͼq而决定将适当的内定w过内容协商QContent
NegotiationQ发回来—这是非常有用的功能Q它可以让网站服务器q回不同的语a、字W集、甚臌可以Ҏ使用者的习惯q回不同的技术。关于内?
协商的讨论很多,我们q就不再多讲。我们主要来看看和服务器端压~有关的一些东ѝ?code>Accept-Encoding表明了浏览器可接受的除了U文本之外的内容~码的类型,比如gzip压羃q是deflate压羃内容?/p>
Accept-Encoding
|GET / HTTP/1.1
Host: www.google.com
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)
Accept: image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,
application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,
application/x-shockwave-flash,*/*
Accept-Encoding: gzip,deflate
Accept-Language: en-us
Connection: keep-aliveAccept-Encoding
Q再加上应答header告诉我们Content-Encoding: gzip
Q我们则会取回仅?,213字节 。用览器的查看源代码功能来看源代码Q我们看不出什么差异,但如果用网l跟t的话,我们׃发现其响应是不同的?/p>
Thomas A. Powell
是PINT公司的创始hQ也是加州大学San Diego分校计算机科学系的讲师,以及一些网开发书c的作者,其所著书目包括《HTML &
XHTML: The Complete Reference》和 《JavaScript: The Complete Reference》等?
Port80 Software, Inc. 是微?Internet Information Services (IIS)
|络服务的领先的开发商. 公司同时提供w3compiler, 一套优化代码的桌面应用软g。Port80 Software
是微软认证合作商(MCP ISV)。它位于San Diego, CA. 更多信息误公司|站 www.port80software.com.
]]>
1. ҎQ?/span>
a) Load balancer +reverse proxy server + server clusterQ?/span>
图一是整体的l构图;思\很清楚;q种的结构的|站pȝ可以提高pȝ的响应能力;
图一
bQ细节问题:
iQ?/span>web server 是否可以是非同质?/span>serverQ比如有的负?/span>mailQ有的负?/span>web面Q?/span>
有的负责文g上传Q?/span>
ii)用户?/span>session信息如何在不同的server之间同步Q?/span>
iiiQ如果用数据库集群的话Q则有的dbserver只负责读数据Q有的则d都做Q?/span>
如何实现Q?/span>Replaication ?/span>mysql中的支持正在研究Q?/span>
cQ加?/span>reverse proxy server; 图二昄了如何在架构中加?/span>reverse proxy serverQ?/span>
q里选择?/span>proxy server?/span>squid Q?/span>http://www.squid-cache.orgQ,Q至于ؓ什么选它Q?/span>
因ؓ很多人都用它Q本人奉行拿来主义)Q?/span>squid用来cache静态的文gQ?/span>jsQ?/span>imageQ?/span>
css{;squid可以?/span>tomcatQ?/span>apache{集成;
图二
dQ谁来做load balancer呢,如果你?/span>linux操作pȝ的话Q那么一定要试试Linux Virtual ServerQ?/span>www.linuxvirtualserver.org/ http://zh.linuxvirtualserver.org/ Q?/span>, 我国的章文嵩博士L的开源项目,TelTel的首席科学家Q?/span>
IBM 的介l资料:
http://www-128.ibm.com/developerworks/cn/linux/cluster/lvs/part1/index.html
http://www-128.ibm.com/developerworks/cn/linux/cluster/lvs/part2/index.html
http://www-128.ibm.com/developerworks/cn/linux/cluster/lvs/part3/index.html
http://www-128.ibm.com/developerworks/cn/linux/cluster/lvs/part4/index.html
图三
势是热门不?#8216;?#8217;Q冷门不?#8216;?#8217;Q?
所谓利基,?/span>Nicheq一英文名词的译Uͼ它是指在市场中通常被大企业所忽略的某些细分市场;所谓利基战略,则是指小企业通过专业化经营来占领q些市场Q从而最大限度的获取收益所采取的策略?/span>
Long tail,
1. 低成本提供丰富多L量产品Q给用户更多选择的机会;
利基产品Q品可以是一部分用户提供的;也可能是合作伙伴提供的;
甚至是需求的提出者提供的Q?/p>
mp3Q优惠券下蝲Q从已有的专业者提供的产品中,L自己需求的产品Q供求双Ҏ截然分开的;
salesforceQ定制玩h型,软g用户构徏Q从半专业或以个人名义的专用者中获得自己需求的产品Q供斚w常是第一个需?/p>
方;需求方也有可能是供方;
以上可以看出Q品的生者可以是M人;q_通常只是中间人,催化剂,qo器;q_通常q拥有品数据;降低供求双方的交易成本;
2. 低成本的”获取“成本Q用户可以很Ҏ的从量产品中找到自己需要的Q?
qo器:丰富的品也会带来问题,用户如果~Z一个好的过滤器Q依然无法实现longtailQ?
Q关键字Q用戯w属性,validationQ?/p>
LongTail表现形式Q?br />
1.SAASQ移动,电信Q麻辣烫Q淘宝;
q_盈利模式:
1.q告模式Q?br />
q_提供用户感兴的各种服务Q比如实用资讯,个性化服务{)Q利用用戯助服务的行ؓ相关性,兌Q推荐出投放者的q告Q文字视频)Q?br />
q_按照展示和点d投放者收费;适用于公益性的pȝQ比如知识库pȝQ用户通常很多Q但不具备收费的可能Q?br />
2.SAAS模式
q_提供用户感兴的各种服务Q比如个性化服务Qweb CRM{)Q直接向用户收费Q?br />
3.C2C模式
q_提供用户感兴的各种服务Q一部分用户付费购买另一部的产品服务Q可以按照交易提取相应费用;或只向提供品方收费Q?br />
比如淘宝Qebay{;
以上“用户感兴的各种服务”Q包?个方面:
1.用户希望直接使用q_提供的品服务;
2.用户希望为通过q_提供自己的品服务;
q样用户分Z应方和需求方Q但在long tail所提出的丰饶经的概念下,供应方和需求方的n份已l模p;供应斚w常也是需求方Q?br />
需求方也可能通过U极的参与,变成供应方;
专业的供应方(刉?#8220;热门”) => 半专业和业余的供应方Q制造小区域内的“热门”Q?br />
所以,TOP10Q必Lh可比性的范围内的TOP10Q否则将失去意义?/p>