流量为王,程序员如何打破 8 秒原则?| 技术头条

640?wx_fmt=gif

640?wx_fmt=jpeg

作者 | 阿文

责编 | 郭芮

 

对于一个 Web 站点或是一个 APP 应用来说,当用户打开你的站点时,最在乎的并不是你提供的内容有多么的吸引人、内容质量有多么高,因为此时用户还没看见你的提供的内容,那么用户最在乎的是什么呢?是你站点加载速度和访问速度。

 

有研究表明,大多数用户期望的网站加载时间是3秒,如果时间长过3秒,就会始流失57%的用户。如果超过8秒,几乎所有用户会毫不犹豫的离开你的网站,这就是所谓的8秒原则


随着技术的日新月异,Web2.0的到来大大提高了网站与网民间之间的互动,可以提供直播、视频、图片等等多媒体方式,因此诞生了许多优秀的门户网站与企业网站。但是同时也带来了很多问题,其中最大的问题就是网站访问速度的问题,这个问题直接影响到网站的流量。

 

众所周知,互联网时代是一个流量为王的时代,谁掌握了流量谁就能赚钱。那么如何解决网站访问慢的问题呢?

要解决网站为什么访问慢,我们得了解,是什么原因会导致网络访问变慢,我总结下主要有以下几点:

 

  • 链路问题;

  • 不同运营商之间互相访问;

  • DNS 解析问题;

  • 服务器系统存在瓶颈导致差导致的访问慢;

  • 程序问题的访问慢。

 

 

640?wx_fmt=png

链路问题

 

 

举个例子,假设杭州的一个网友小李,他通过手机访问一家图片类的网站,但是这家网站的服务器是在北京,如图所示:

 

640?wx_fmt=png


他怎么访问到这台服务器的呢?首先,小李从他的设备打开浏览器访问对应的网站,此时数据就会从网卡将请求发出去,假设小李从客户端连接的是WiFi,就会首先从WiFi对应的路由器将数据转发出去,然后经过运营商的网络,这中间会经过很多个大大小小的路由设备,最终将数据传递到对应的网站服务器,如图所示:

 

640?wx_fmt=png


这就好比你从杭州买个高铁票到北京,中间经过很多个站点,比如上海站、山东站等,这一个一个的站点就可以理解为一个一个的路由器。需要注意的是,上图所示的只是客户端将数据发送给服务器的过程,那么服务器收到数据之后就会与客户端建立经典的TCP 握手,也就是收到客户端发送的SYN标志位,然后会回复客户端SYN+ACK,此时数据又从服务器对应的机房出口路由器一层一层的返回给客户端。一来一回,你是不是感觉这个过程很慢,事实上这确实是比较慢。但是网络的传输速度还是比现实中坐高铁快得多的,所以这个过程可能也就需要几秒的时间。

众所周知,2个不同路由器下的设备如果要进行通信,就必须要需要使用 IP 地址,在IPV4协议的报头中有一个字段叫 TTL ,即Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。TTL的最大值是255,一般推荐值是64。这个值越大说明经过的路由越多,延迟也就越大。

 

在IP数据包从源到目的的整个转发路径上,每经过一个路由器,路由器都会修改这个TTL字段值,具体的做法是把TTL的值减1,然后再将IP包转发出去。如果在IP包到达目的IP之前,TTL减少为0,路由器将会丢弃收到的TTL=0的IP包并向IP包的发送者发送 ICMP time exceeded消息。

比如我们要 ping 百度 从下面就可以看到 ttl 等于 54:
 

# ping www.baidu.com
PING www.a.shifen.com (180.97.33.10756(84) bytes of data.
64 bytes from 180.97.33.107 (180.97.33.107): icmp_seq=1 ttl=54 time=12.4 ms
64 bytes from 180.97.33.107 (180.97.33.107): icmp_seq=2 ttl=54 time=12.2 ms
64 bytes from 180.97.33.107 (180.97.33.107): icmp_seq=3 ttl=54 time=12.0 ms
64 bytes from 180.97.33.107 (180.97.33.107): icmp_seq=4 ttl=54 time=11.9 ms


不过,如果客户端在请求时,中间某个路由器设备或网络线路出现故障,那么就无法正常建立连接了。这个时候就会出现丢包,如果丢包率达到100%,就说明这个网站是完全无法访问,我们可以通过 mtr 或traceroute 等命令来确认从客户端到达目标网络中间链路是否丢包是否延迟很大。

 

其中的Loss% 列如果对应的行出现丢包率 100% 就说明该行对应的IP 地址所在的路由设备出现问题,从而导致无法继续将数据转发出去了。

 

Keys:  Help   Display mode   Restart statistics   Order of fields   quitPackets               PingsHost                                                                                                                                                                                              Loss%   Snt   Last   Avg  Best  Wrst StDev1. ???2. 10.206.48.65                                                                                                                                                                                    0.0%   360    1.3   1.4   1.0   3.3   0.23. 115.238.120.149                                                                                                                                                                                 0.0%   360    1.4   1.9   1.0  10.7   0.74. 115.238.120.101                                                                                                                                                                                 0.0%   360    1.6   1.7   1.1  11.2   1.05. 220.191.200.243                                                                                                                                                                                 0.0%   360    5.4   6.3   5.0 105.5   7.06. 202.97.33.161                                                                                                                                                                                  36.5%   360   16.2  17.7  12.0 311.6  34.17. 202.102.73.150                                                                                                                                                                                  0.0%   360   15.4  22.6  13.8 220.3  22.78. ???9. 180.97.32.102                                                                                                                                                                                   100.0%   360   24.7  30.3  14.3  91.1  16.8
10. ???


 

640?wx_fmt=png

不同运营商之间互相访问

 

 

还有一种情况就是不同运营商的网络之间访问也会导致访问延迟变大,从而导致请求丢包或连接被拒绝。

 

在国内,不同运营商之间的网络走的线路是不一样的,假设小李是使用的中国移动的网络,而他访问的目标网站是一个中国联通的服务器,由于存在这种问题就会导致请求变得非常慢或直接无法访问。

 

640?wx_fmt=png

 

要解决这个问题就是服务器选择BGP(边界网关协议,Border Gateway Protocol)线路的机房, BGP是互联网上一个核心的去中心化自治路由协议,它可以很好地解决不同运营商之间的访问延迟大等问题。

 

640?wx_fmt=png

DNS 解析问题

 

 

不同的DNS 服务器解析得到的 IP 结果是不一样的。一般情况下,如果不主动配置,运营商会默认给客户端分配一些运营商自己的 DNS 服务器,这些服务器由于更新缓存慢,也会导致无法访问等情况出现。因此建议客户端配置公共的 DNS 服务器,例如  114.114.114 等DNS地址。

 

 

640?wx_fmt=png

服务器本身性能问题

 

 

如果服务器的访问量过大,就会导致系统 CPU、内存、磁盘I/O、网络I/O飙高,也会导致请求被中断,从而无法正常请求无法被处理从而导致报错,例如 HTTP 报 5XX 的错误。

 

 

640?wx_fmt=png

应用本身问题

 

 

如果一个网站服务器存在大量的图片则会导致浏览器加载变慢,从而导致访问慢,另外一些html文件或js css文件没有经过压缩也会导致文件变大,从而导致加载时间变长,亦或者程序的某个方法写的有问题导致请求时间过长等等。

 

我们可以通过例如Chrome等浏览器的开发者模式来确认到底是那些文件加载时间过长,从而针对性的进行优化。

 

640?wx_fmt=png


 

640?wx_fmt=png

如何优化?

 

 

那么怎么优化呢?首先,可以通过配置 Web 服务器的缓存规则来实现对一些静态资源进行缓存,从而达到快速访问的效果。例如 nginx 中通过如下配置,实现将制定的文件进行缓存 30天。
 

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires      30d;}location ~ .*\.(js|css)?${expires      30d;}


当文件被缓存后,请求就不会直接去磁盘获取文件,从而减小 I/O 资源的消耗。

其次,可以配合 CDN 来实现加速,CDN 全称是Content Delivery Network,即内容分发网络。

 

CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度、缓存等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。使用 CDN 可以大大降低客户端到达服务器的网络延迟。

另外,对系统进行监控,判断瓶颈在哪里并进行必要的升级或水平扩容,从而达到降低系统负载。

此外,服务端如果有多台服务器,也可以针对不同运营商的请求使用 DNS 分发到不同的区域或不同的运营商从而达到降低负载以及解决不同运营商之间访问慢的问题。

最后,可以对应用程序本身进行检查,比如是否是哪个方法或调用出现问题导致的访问变慢。

2019程序员转型学什么?

https://edu.csdn.net/topic/ai30?utm_source=csdn_bw

640?wx_fmt=jpeg

作为码一代,想教码二代却无从下手:

听说少儿编程很火,可它有哪些好处呢?

孩子多大开始学习比较好呢?又该如何学习呢?

最新的编程教育政策又有哪些呢?

下面给大家介绍CSDN新成员:极客宝宝(ID:geek_baby)

戳他了解更多↓↓↓

640?wx_fmt=jpeg

 热 文 推 荐 

微软 GitHub 旗帜鲜明抵制 996!

☞ 遇冷的斗鱼直播,还“斗”得动吗?| 畅言

☞ 特斯拉全新自动驾驶芯片最强?英伟达回怼!| 极客头条

 国际信奥金牌,保送清华姚班,这位 00 后是怎么做到的?| 人物志

☞ 程序员的双肩包,大概能装下整个宇宙!

 强推!十大顶级大数据可视化工具 | 程序员硬核评测

☞ 裁员25%, 梅西也拯救不了全球第一款区块链手机!

☞ 深入卷积神经网络背后的数学原理 | 技术头条

☞ 程序员被骗"黑砖窑":监禁、恐吓、996无休编程!

 

System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在看吧!"

640?wx_fmt=gif点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

640?wx_fmt=png你点的每个“在看”,我都认真当成了喜欢

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/350363.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

北京智和信通网络流量监控分析平台

随着网络的应用逐渐广泛&#xff0c;网络中承载的业务更加丰富&#xff0c;如何了解网络承载的业务&#xff0c;掌握网络流量特征&#xff0c;以便将网络配置最优化&#xff0c;是用户面临的一大挑战。绝大多数的IT管理部门还未建立起通过一套产品全面实现网络、业务流量监控分…

2023·新星计划 - 为什么头部博主们写的内容有那么多人追捧?他们是掌握了什么流量密码?

推荐&#xff1a; Python全栈白宝书专栏&#xff0c;免费阶段订阅数量4300&#xff0c;购买任意白宝书体系化专栏可加入TFS-CLUB 私域社区。福利&#xff1a;加入社区的小伙伴们&#xff0c;除了可以获取博主所有付费专栏的阅读权限之外&#xff0c;还有机会加入 星荐官共赢计划…

高佣金流量卡上线

01 流量卡业务 常规的运营商套餐相对都比较贵&#xff0c;少则六七十一个月&#xff0c;多则几百块一个月&#xff0c;这样的套餐让运营商赚盆满钵满。 随着5G需求越来越多&#xff0c;其他第三方运营商也开始市场化营销&#xff0c;流量卡的CPA基本在60-200之间一张卡&…

以流量为王的时代,如何获得不错的流量,泰山众筹如何脱颖而出?

由于互联网、疫情等因素的影响&#xff0c;实体业务变得越来越困难。许多实体店已经开始转向在线电子商务&#xff0c;但运营一个好的电子商务平台并不容易。没有稳定的流量和忠实的用户&#xff0c;很难达到理想的效果。那到底如何才能获得不错的“流量”呢&#xff1f;泰山众…

网上流量卡可靠吗,网上的这些大流量卡你知道是怎么来的吗?

网上怎么这么多五花八门的流量卡&#xff0c;这些大流量卡是怎么来的你都知道吗&#xff1f; 所谓的大流量卡&#xff0c;是因为每个省份为了拉新用户所自行包装的产品&#xff0c;一般是在在基础套餐上增加了一些流量包和充值送话费活动&#xff0c;然后得出来一个产品套餐&am…

网络安全一哥的流量分析服务非常好

产品概述 奇安信天眼新一代威胁感知系统&#xff08;以下简称“天眼”&#xff09; 汇集流量传感器、文件威胁鉴定 器、邮件告警、奇安信天堤防火墙、网神云锁等多种告警数据&#xff0c;基于奇安信自有的多维度 海量互联网数据&#xff0c;进行自动化挖掘与云端关联分析&…

Linux4.8Nginx Rewrite

文章目录 计算机系统5G云计算第六章 LINUX Nginx Rewrite一、Nginx Rewrite 概述1.常用的Nginx 正则表达式2.rewrite和location3.location4.实际网站使用中&#xff0c;至少有三个匹配规则定义5.rewrite6.rewrite 示例 计算机系统 5G云计算 第六章 LINUX Nginx Rewrite 一、…

Apache 日志解析和分析工具

ApacheWeb服务器在企业中广泛用于托管其网站和Web应用程序。Apache 服务器生成的原始日志提供了有关 Apache 服务器托管的网站如何处理用户请求以及访问您的网站时经常遇到的错误的宝贵信息。 什么是 Apache 日志 Apache 日志包含 Apache Web 服务器处理的所有事件的记录 - 从…

C++ Release版软件 程序运行丢失MSVCR120D.dll的解决方法

软件在Debug模式下运行时正常的&#xff0c;但是切换到Release模式下就弹出错误提示&#xff1a;无法启动此程序&#xff0c;因为计算机中丢失MSVCR120D.dll。尝试重新安装该程序以解决此问题。 解决方法如下&#xff1a; 1、项目“属性”---->配置给为“Release”版本----&…

vmware 详细安装教程

一.VM是什么&#xff1f; VMware Workstation是一个“虚拟 PC”软件。它使你可以在一台机器上同时运行二个或更多 Windows、DOS、LINUX 系统。与“多启动”系统相比&#xff0c;VMWare 采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统&#xff0c;在系统切换时需要…

mt管理器逆向了解安卓----【mt管理器介绍】

mt管理器介绍 ps:此教程完全适合新手&#xff0c;如已了解请略过

apktool助手转java_apktool助手

Apktool助手可以给软件加注册机、改包名、编译和反编译&#xff0c;功能强大。Apktool助手帮助您在手机端也能对apk文件进行修改&#xff0c;喜欢此款Apktool助手手机版&#xff0c;想要下载使用的朋友不要错过。 软件特色 ApkTool Box配合工具包可以轻轻松松的实现apk&#xf…

剑网3指尖江湖开局门派选TA最好 叉叉助手伴你快意江湖

万众期待的《剑网3&#xff1a;指尖江湖》将于6月12日上线&#xff01;在国创武侠网游界&#xff0c;剑网三的大名可谓无人不知无人不晓。该作是西山居以端游IP研发的一款角色扮演类手游&#xff0c;有别于大部分角色扮演游戏的单人物多职业套路&#xff0c;此款游戏的最大亮点…

全民小镇ios越狱用户叉叉助手辅助刷金币攻略

接下来再来看看全民小镇ios刷金币&#xff0c;里面包含有单一的叉叉辅助刷金币教程。这个时候我们切换到八门神器保证程序全民飞机大战于搜索框内输入点击会出来一批的数据还不能确定哪个数值是支持金币需要再进行筛选。其实修改金币之类的最常用的就是烧饼修改器以及八门神器了…

叉叉开发文档

xxzhushou 2019-04-03 14:50 字数 66259 阅读 400563 叉叉脚本开发手册 叉叉脚本 引擎版本&#xff1a;1.9.314 叉叉脚本开发手册 前言开发文件夹路径 本地脚本存放路径公共文件夹路径截图存放路径日志文件路径脚本开发实用技巧&#xff08;持续更新&#xff09;叉叉脚本定制…

安卓通讯录操作插件

包含获取通讯录、添加联系人、修改联系人、删除联系人、拨打电话、获取通话记录、添加通话记录、删除通话记录、获取短信记录、发送短信、获取电话号码运营商和归属地等功能。 地址&#xff1a;安卓通讯录操作插件 - DCloud 插件市场 所需权限 复制代码 <!-- 读写联系人…

android+mat工具下载,MAT助手下载-MAT助手下载V3.3安卓版-西西软件下载

MAT助手是一款专门为mat用户打造的手机软件&#xff0c;用户可以使用这款软件对应用包的文件名进行修改&#xff0c;对于mat用户来说绝对是一个小巧而实用的神器&#xff0c;操作也特别简单&#xff0c;小白用户勿入&#xff0c;需要的可以来西西下载MAT助手进行体验 MAT助手介…

4、叉叉助手逆向分析续集--模拟实现游戏插件框架--再扩展到脱壳机

这里以HOOK程序启动后调用天天星联盟为例&#xff0c;下面是2014年4月30日抠出来的天天星联盟插件APK代码&#xff1a; package com.xxAssistant.UI; import android.app.Activity; import android.content.Context; import android.util.Log; import android.widget.RelativeL…

软考A计划-电子商务设计师-复习要点

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

安装mt工具箱离线版本

安装mt工具箱 如果安装成功&#xff0c;那么恭喜你&#xff0c;如果安装失败&#xff0c;请看我后面的。 mt2.0 离线包不建议安装了&#xff0c;主要是插件中心挂了&#xff0c;喜欢折腾的可以参照我的文档&#xff0c;不喜欢折腾的&#xff0c;就不要折腾了 后记&#xff1a…