作者
阿文
责编
郭芮
对于一个Web站点或是一个APP应用来说,当用户打开你的站点时,最在乎的并不是你提供的内容有多么的吸引人、内容质量有多么高,因为此时用户还没看见你的提供的内容,那么用户最在乎的是什么呢?是你站点加载速度和访问速度。
有研究表明,大多数用户期望的网站加载时间是3秒,如果时间长过3秒,就会始流失57%的用户。如果超过8秒,几乎所有用户会毫不犹豫的离开你的网站,这就是所谓的8秒原则。
随着技术的日新月异,Web2.0的到来大大提高了网站与网民间之间的互动,可以提供直播、视频、图片等等多媒体方式,因此诞生了许多优秀的门户网站与企业网站。但是同时也带来了很多问题,其中最大的问题就是网站访问速度的问题,这个问题直接影响到网站的流量。
众所周知,互联网时代是一个流量为王的时代,谁掌握了流量谁就能赚钱。那么如何解决网站访问慢的问题呢?要解决网站为什么访问慢,我们得了解,是什么原因会导致网络访问变慢,我总结下主要有以下几点:
链路问题;不同运营商之间互相访问;DNS解析问题;服务器系统存在瓶颈导致差导致的访问慢;程序问题的访问慢。
链路问题
举个例子,假设杭州的一个网友小李,他通过手机访问一家图片类的网站,但是这家网站的服务器是在北京,如图所示:
他怎么访问到这台服务器的呢?首先,小李从他的设备打开浏览器访问对应的网站,此时数据就会从网卡将请求发出去,假设小李从客户端连接的是WiFi,就会首先从WiFi对应的路由器将数据转发出去,然后经过运营商的网络,这中间会经过很多个大大小小的路由设备,最终将数据传递到对应的网站服务器,如图所示:
这就好比你从杭州买个高铁票到北京,中间经过很多个站点,比如上海站、山东站等,这一个一个的站点就可以理解为一个一个的路由器。需要注意的是,上图所示的只是客户端将数据发送给服务器的过程,那么服务器收到数据之后就会与客户端建立经典的TCP握手,也就是收到客户端发送的SYN标志位,然后会回复客户端SYN+ACK,此时数据又从服务器对应的机房出口路由器一层一层的返回给客户端。一来一回,你是不是感觉这个过程很慢,事实上这确实是比较慢。但是网络的传输速度还是比现实中坐高铁快得多的,所以这个过程可能也就需要几秒的时间。众所周知,2个不同路由器下的设备如果要进行通信,就必须要需要使用IP地址,在IPV4协议的报头中有一个字段叫TTL,即TimeToLive的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。TTL的最大值是,一般推荐值是64。这个值越大说明经过的路由越多,延迟也就越大。
在IP数据包从源到目的的整个转发路径上,每经过一个路由器,路由器都会修改这个TTL字段值,具体的做法是把TTL的值减1,然后再将IP包转发出去。如果在IP包到达目的IP之前,TTL减少为0,路由器将会丢弃收到的TTL=0的IP包并向IP包的发送者发送ICMPtimeexceeded消息。比如我们要ping百度从下面就可以看到ttl等于54:
#ping