zoukankan      html  css  js  c++  java
  • 网络连接和初始HTTP请求

    浏览器检索网页,先从URL开始,使用DNS确定IP地址,再用基于TCP和HTTP协议连接到服务器,请求相关的内容,得到相应,浏览器解析并呈现到屏幕上。
    服务器响应后,浏览器响应不会同时全部到达,会陆续到达,有时候之间还会有时间间隔。
    页面解析和新的资源请求浏览器等待数据包时,会解析得到包,并寻找可用新的HTTP请求,并启动,每一个服务器,浏览器一般最多同时打开两个请求连接。
    一般一次请求:
    1、DNS解析IP地址的时间
    2、读取主页面时间:连接服务器,发送HTTP get请求,接受初始的HTTP响应时间,和盛余响应到达时间
    3、检查图片等其他资源,连接时间,请求并接受所需要的时间
    浏览器接受HTML响应时,就开始一边接受,一边解析,当解析到需要打开其他请求的资源时,会并行打开这个资源的请求,所以像这样的资源放在HTML的顶部比放在底部呈现的速度是不一样的,在顶部更快,一般在HTML中的前500个字节中,放置这样订单请求,是一个很好的加速方法。
    页面资源顺序
    浏览器呈现HTML中的<body>元素之前,会先请求<head>中内容,在head所以资源下载完成之前,用户不会看到呈现的内容,所以尽可能将一些请求放在body内,这样呈现页面和加载资源并行进行,从而缩短页面的呈现时间。随着html解析,页面中引用的资源,会按照html中的出现的顺序进行排队。同一台服务器,最多打开两个连接,所以多于2个的资源会被压入等待队列里面。
    但是有时候我们页面中顶部有大幅banner,哦我们不希望在一开始去请求这样的资源,影响到后面重要的内容的呈现,我们可以使用延迟加载技术:
    例如

    1 <img id="myimg" with="50" heigth="50">
    2 ...
    3 <script type="text/script">
    4 document.getItemById("myimg").src="myimg.jpg";//会让浏览器请求这个图
    5 </script>

    图片标签应该制定宽和高,可以减少呈现时间。
    我们还可以提前加载:

    1 <script type="text/script">
    2 var myimg = new img();
    3 myimg="myimg.jpg";//会让浏览器请求这个图
    4 </script>
    5 ...
    6 <img src="myimg.jpg" id="myimg" with="50" heigth="50">

    分配Image对象,设置src属性,即会开始请求图片,在<img>中只要再次使用相同的文件就可以了,浏览器会缓存这个图片。
    浏览器缓存
    浏览器缓存是区分大小写的,如果引用相同对象,URL大小写不同,浏览器会多次下载相同的对象。
    所以我们强制所以的URL都使用小写。
    网络优化:每一个域名最多同时打开两个连接,页面上同时请求同一个域名下的多个资源会进入等待队列中,同时只能打开两个连接,其余等待。改善的方法是,将图片放入不同的子域名中,可以在同一时间并行打开所有连接,但是一个新的连接是有开销的,我们一般从2-4个域名中加载内容。
    脚本文件处理浏览器连接请求javascript资源,并会一个一个获取他们,在脚本文件被请求期间,其他的请求进入等待队列,但是在javascript资源请求之前,已经有其他的资源正在请求,script不会打断,只会打断后面的请求。所以我们尽可能的合并脚本。
    使用页面onload处理器,和延迟加载来执行后期请求

    1 <body onload="lateImage()">
    2 <img id="myimg" with="50" heigth="50">
    3 ...
    4 <script type="text/script">
    5 function lateImage()
    6 {
    7     document.getItemById("myimg").src="myimg.jpg";//会让浏览器请求这个图
    8 }
    9 </script>
  • 相关阅读:
    sed命令使用与正则表达式元字符
    centos6和centos7的网卡配置
    制作启动光盘centos6
    搭建一个私有CA
    yum命令
    while语法命令
    linux的进程与计划任务命令总结
    磁盘管理命令应用
    脚本命令与笔记
    重定向命令的使用
  • 原文地址:https://www.cnblogs.com/jymz/p/4000427.html
Copyright © 2011-2022 走看看