证明:减少HTTP请求数能减少网页传输时间

in Notes with 19 comments

这应该是一道标准的初中数学题吧,至少初中学历的应该能看得懂吧~(我猜的/逃

既然有看得懂的能力,那就开始吧~


题目告诉我们两个关键词是HTTP请求数网页传输时间,那么其他的一些额外条件和影响因素就需要我们去假设,那么就~

假设有资源 r1, r2, r3, r4..., rn,其大小分别为 s1, s2, s3, s4..., sn。当前网络环境是稳定的,每建立一个HTTP连接所耗时为t,网络传输速度为b。这里由于是对同一个站点的请求,请求不同的资源时所发送的请求时间p应该相同,等待资源进行传输的时间w也应该相同(这个时间也可以认为是从服务器收到请求到开始传输返回结果的响应时间)。在现代浏览器中,常采用同时建立多个连接方式并发获取资源,这里假定并发连接数为h。传输所有数据消耗的时间分为四个部分:连接建立,发送请求,等待传输,资源传送。不考虑连接销毁的情况。

我们再简单列出我们的假设好的一些变量和常量

那么在未优化时,传输所有数据需要耗时为T1:

$$T1 = {tnp \over h}+{nw \over h}+{(s1+s2+s3+s4+...+sn) \over bh}$$

化简为:

$$T1 = t+{n(p+w) \over h}+{(s1+s2+s3+s4+...+sn) \over bh}$$

假设优化后,资源数量减少到k,那么资源有 R1, R2, R3, R4..., Rk,其大小分别为 S1, S2, S3, S4..., Sk。建立连接需要消耗的时间t,网络传输速度b,发送请求时间p,等待资源传输的时间w,并发连接数h均不变。

那么在优化后,传输所有数据需要耗时为T2:

$$T2 = t+{kp \over h}+{kw \over h}+({S1+S2+S3+S4+...+Sk) \over bh}$$

化简为:

$$T2 = t+{k(p+w) \over h}+{(S1+S2+S3+S4+...+Sk) \over bh}$$

还有一个重要因素,为了保证优化前和优化后,用户都能看到是同一个网页内容,减少资源数量的方式采用的是合并资源,说明 s1+s2+s3+s4+...+sn = S1+S2+S3+S4+...+Sk,合并资源不会造成资源的总大小发生变化。故优化后,减少的网络传输时间为:

$$T1-T2 = {(n-k)(p+w) \over h}$$

看到这里,不要告诉我已经忘了公式中的字母代表意义。好吧,我知道了,其中

通过上面的推理证明可知,要使网页传输时间获取最小值,则k取最小值1,资源最多只能合并为1个。当然在实际情况下,k值应取合理值。

同时,我们还发现发送请求时间p与等待资源进行传输的时间w也是对网页传输时间有着巨大的影响,用户可以通过升级上网宽带等方式实现缩短发送请求时间,和站长提升服务器性能等方式实现缩短等待资源传输的时间来提高上网体现。

那么最后一个问题是,你看懂了吗?

Responses
  1. 踩坑人 踩坑人

    明白了^_^,我是技术小白,只是刚在看这块内容,感谢楼主这篇博文!还想请教一下楼主,我想搭一个类似你这样的博客,我应该做些什么样的准备工作?

    Reply
    1. @踩坑人

      买个vps和域名,搭建好web环境,然后去官方下载typecho,然后用我设计的主题就可以了。哈哈

      Reply
      1. 踩坑人 踩坑人
        @Chakhsu Lau

        好的,谢谢楼主

        Reply
  2. 踩坑人 踩坑人

    楼主,这个解释有点牵强吧,并发传输资源的总的消耗时间不应该是最大的那个资源传输所用的时间吗?

    Reply
    1. @踩坑人

      好吧,我提出这个解释是基于HTTP/1.1以前的网络环境,没问题了吧 :)

      Reply
  3. 博主,我有初中学历咋看不懂啊

    Reply
  4. 上H2不是可以搞定么

    Reply
    1. @云计算笔记

      哈哈哈,推荐看一下我写的教程,https://www.linpx.com/p/enable-http2-support.html 应该会有些帮助。

      Reply
  5. 博主你好 我用了您的主题 特来感谢!请问图片你是怎么显示的??

    Reply
    1. @大官人

      附件里,上传图片,保证第一个附件是该图片,第二种方法是文章编辑的时候自定义字段,image,后面就是你图片的URL

      Reply
  6. hello hello

    鼠标移动上去图片有动态效果是主题默认的吗?
    难道因为我用的typecho是正式版因此没有实现?

    Reply
    1. @hello

      首先建议使用开发版,然后效果是默认的。

      Reply