您的位置:首页 > 其它

构建高性能Web站点(笔记六)

2010-10-17 15:20 302 查看

第九章 Web组件分离

Web组件: 指Web服务器提供的所有基于URL访问的资源,保罗动态内容、图片、脚本、CSS等。
Web组件分离的目的: 采用针对性的方法,使得各种Web组件能够充分有效地利用服务器资源,达到符合各自实际情况的吞吐率最大化。
如何分离:
(1)将Web组件分别独立部署,可位于不同的物理服务器或同一个物理服务器不同逻辑单元中,同时将不同的域名指向不同的Web组件服务器。不必购买新的主域名,只需使用站点现有主域名的二级域名。

以下是新浪网上的组件分离策略(采用二级域名重写URL)
<!-- optimization begin -->
<script type="text/javascript" src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js"></script>
<script type="text/javascript" src="http://news.sina.com.cn/js/213/20091202/34/head.js"></script>
<script type="text/javascript" src="http://news.sina.com.cn/pfpnews/js/libweb.js"></script>
<!-- optimization end -->
对于站点中多个二级域名需要使用cookie时,就需要为一些比较独立的组件启用新的顶级域名,这样来自原有主站点的cookie不会再主动上报。
文件在服务器间迁移(文件分发和同步,分布式文件系统)
浏览器的并发数:
浏览器的最大并发数对于同一个域名下的组件是有限制的,用不同的域名对Web组件进行分离后,可以提高浏览器下载Web组件的并发数。
HttpWatch可以用来检测浏览器请求。在线测试工具http://site-perf.com

静态网页:
不需要动态脚本解释器参与,需要全身心地进行IO操作,属于IO密集型应用。静态内容的吞吐率很大程度上取决于服务器的并发处理能力。
提高处理静态网页时的吞吐率的措施: 支持epoll,非阻塞IO和异步IO,使用sendfile()系统调用,使用高速磁盘等。
Epoll可以使Web服务器在大量并发用户数的情况下保持较稳定的吞吐率。
非阻塞IO能避免不必要的IO等待。
Sendfile()能避免文件系统磁盘缓冲区到用户地址空间的数据复制,从而优化IO。
Http持久连接可以大大提高图片服务器的吞吐率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: