`
seadragonnj
  • 浏览: 59016 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

80/20原则和HTTP Request

阅读更多

原文

80/20性能原则

Vilfredo Pareto 一个1900年前的经济学家,说了句特精辟的话,80%的财富是属于20%的人的(我就是那20% ),后来这句话被很多领域证明,它几乎成了一个万能定律,人们把它叫做帕累托原则(更有名的叫法是80-20原则),软件行业对这句话的解释是:80%的时间被花到20%的代码上。所以当我们优化我们的代码时,我们应该关注那20%的代码,这个理论也可以用在优化web页面上,在web优化方面,当前,大部分优化工作是在如何产生HTML文档方面(apache, C++, databases,等),但是这种对用户的响应时间优化工作只是对那20%进行的,我们的关注点应该放到那80%上。

用一个数据包嗅探器,我们可以发现响应时间的80%是发生在什么地方,表1中的图形视图(graphical view )是在没有缓存的情况下,请求http://www.yahoo.com所花的时间生成的图表,每一个横条代表一个特定的组件在浏览器中显示出来所花的时间,第一个横条是只显示HTML文档所花的时间,可以看出来,显示HTML文档只花了总时间的10%不到,apache把所有的HTML缝合到一起然后返回到浏览器(and for apache to stitch together the HTML and return the response back to the browser.)(不会翻译这句话) 剩下的90%的时间用于显示图片、js、css等组件上

loading http://www.yahoo.com

表1说明了当前主流的web站点花费5%到38%的时间下载HTML文档,其余的62%到95的时间花费在HTML页面中的其他组件中(比如:图片、js、css等),由于在每一个并联的主机上,浏览器只能下载2到4个组件,使得如果一个页面的很多组件的话,会使页面的性能更低,我们的经验表明减少HTTP请求数对页面响应时间的影响是最大的(也就是说,减少HTTP请求数是最好的优化方法,这句话是我自己加的,呵呵),也是最简单的提高响应时间的方法

 

table 1. Time spent loading popular web sites Time Retrieving HTML Time Elsewhere Yahoo! Google MySpace MSN ebay Amazon YouTube CNN
            10%           90%
            25%            75%
            9%             91%
            5%             95%
            5%             95%
            38%

            62%

             9%             91%
             15%             85%
分享到:
评论
2 楼 damoqiongqiu 2009-06-02  
如何去减少HTTP请求数呢?假如条件有限的话
1 楼 everlasting_188 2009-05-21  
写的不错,非常好!!!!

相关推荐

    get、post、request的区别

    在PHP编程中,了解HTTP请求方法,特别是GET、POST和REQUEST的作用至关重要,因为它们涉及到如何接收和处理客户端发送的数据。让我们深入探讨这三个变量的区别以及如何在实际应用中使用它们。 首先,`$_GET`变量用于...

    http-request-smuggler,.zip

    总结来说,`http-request-smuggler.zip` 包含的开源项目是网络安全研究和测试领域的一个强大工具,它专为HTTP请求走私攻击而设计,可以帮助专业人员发现和利用这类漏洞,提升安全评估的效率和深度。不过,如同所有...

    Node.js-deft-request是一个轻量级的Javascript浏览器请求框架

    8. **模块化设计**:作为Node.js开发的一部分,deft-request遵循模块化设计原则,可以与其他Node.js库无缝集成,符合Node.js社区的开发习惯。 在`catta-master`这个压缩包中,可能包含了deft-request的源码、示例...

    Adobe.Press.CSS.Animations.and.Transitions.for.the.Modern.Web.0133980502.pdf

    《Adobe Press: CSS 动画与过渡技术在现代网络中的应用》这本书为设计师们提供了一套全面的指南,不仅介绍了CSS3动画与过渡的基本原理和技术要点,还提供了大量的实践案例和在线资源。通过对本书的学习,设计师能够...

    struts的request包装替换的思想

    同时,由于Filter的拦截机制,这种改动不会影响到其他已经存在的代码,遵循了开闭原则,提高了代码的可维护性和可扩展性。 总的来说,“Struts的request包装替换的思想”是一种实用的编程技巧,它允许开发者在不...

    http请求 request失败自动重新尝试代码示例.pdf

    以下是一个基于Python的`requests`库实现的HTTP请求失败后自动重试的代码示例,以及相关的网络协议和软件设计原则。 首先,我们定义了一个装饰器函数`conn_try_again`,它的作用是在HTTP请求发生异常时自动进行重试...

    Java技术问答(带链接)

    - Oracle数据库索引的管理和优化。 - Hadoop大数据处理平台的基本命令。 4. **分布式系统** - 分布式系统的幂等性设计。 - 微服务架构下的数据管理策略。 - 分布式Session管理的最佳实践。 5. **高级主题** ...

    pull-request-container-源码.rar

    《深入解析Pull Request Container源码》 在软件开发过程中,版本控制工具如Git极大地推动了协作和代码审查的流程。其中,Pull Request(PR)是...同时,源码分析也是提高编程技能、理解和掌握软件设计原则的好途径。

    Laravel开发-normalization-request-uri

    总的来说,`Laravel开发-normalization-request-uri`关注的是如何确保Laravel框架能够正确处理各种格式的请求URI,保证路由到正确的控制器和方法,提供一致的用户体验。通过对`normalization-request-uri-master`...

    java免费下载资源网站

    - 艺术.pdf:虽然看似不直接相关,但设计原则和用户体验在软件开发中也很重要。 - 关注科帮网获取更多源码.url:这是一个网址链接,指向可能提供更多Java源码和其他学习资源的网站。 在学习和使用Java时,不断探索...

    python3 + excel + request 接口测试框架学习

    - 良好的代码组织和设计原则,如单一职责原则、开闭原则,可以帮助我们构建可扩展和维护的测试框架。此外,使用模块化和面向对象编程可以使代码更加清晰。 通过以上知识点的学习和实践,你将能够构建一个基本的...

    Python库 | django_request_token-0.14.1-py3-none-any.whl

    `django_request_token`库提供了一种简单的方法来生成和验证这些令牌,确保只有合法的请求才能被执行。它可能包括以下功能: 1. 自动生成并附加请求令牌到每个需要保护的表单或者HTTP请求头。 2. 验证请求中的令牌...

    Android-避免onActivityResult和onRequestPermissionsResult烦恼requestCode的问题

    在Android应用开发中,`onActivityResult`和`onRequestPermissionsResult`是两个重要的回调方法,...通过使用合适的工具和最佳实践,我们可以使代码更加整洁,减少潜在的错误,同时也能更好地遵循Android的设计原则。

    RESTful-API设计原则与规范

    ### RESTful-API设计原则与规范 #### 一、背景与基础概念 RESTful架构作为一种流行的互联网软件架构,因其结构清晰...通过遵循上述RESTful API设计原则和使用Swagger标准,可以构建出高效、稳定且易于维护的API系统。

    AJAX技术原理和使用方法

    1. **减轻服务器负担**: AJAX遵循“按需取数据”的原则,只获取必要的数据,减少了冗余请求和响应,从而减轻了服务器压力。 2. **提高用户体验**: 用户无需等待整个页面的重新加载,只需要等待局部内容的更新,大大...

    swift-request:为SwiftUI设计的声明性HTTP网络

    在实际应用中,`swift-request`与SwiftUI的集成非常顺畅,因为它们都遵循Swift的现代编程原则。你可以直接在视图模型或者视图中发起网络请求,并将结果绑定到UI上,实现数据驱动的用户界面。 总的来说,`swift-...

    xhrhttprequest部分浏览器中不支持put/delete

    xhrhttprequest部分浏览器中不支持put/delete这个问题,主要涉及到的是前端开发中的Ajax技术,特别是XMLHttpRequest(XHR)对象在处理HTTP请求方法PUT和DELETE时的兼容性问题。XMLHttpRequest是JavaScript用于实现...

    微信小程序支付,java封装,拿来即用

    原则:拿来即用,节省开发时间 介绍:创建订单(统一下单),订单回调通知,查询订单,关闭订单 技术:springboot,java,fastjson,okhttp,mysql 使用方法: //创建订单(统一下单) WxPay.createOrder(openId, order, ...

    cpp-cinatra一个高效易用的chttp框架

    server.set_http_handler<GET>("/", [](const request& req, response& res) { res.set_content("Hello, World!", "text/plain"); }); server.listen(8080); server.run(); } ``` 在这个例子中,我们创建了一...

    JavaScript_使用Meteor构建的开源看板保持变量字段名camelCase对于翻译只添加Pull Request更改

    Pull Request是一种版本控制协作方式,允许开发者向项目贡献代码,其他团队成员可以审查并讨论这些更改,确保它们符合项目的质量标准和设计原则。 创建Pull Request时,开发者应当详细说明所提议的更改,并遵循以下...

Global site tag (gtag.js) - Google Analytics