`

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

阅读更多

第九章 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持久连接可以大大提高图片服务器的吞吐率。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics