网络-18.
题目:访问网页速度慢,可能有哪些原因?
解答:
无资料解答:
分为几个方面来解答这个问题
- 1.网络方面
- 2.前端渲染和加载慢
- 3.后台返回慢
- 4.硬件设施
1.连接了代理,代理设置了模拟慢速或者过滤了该请求
2.当前的请求本身就是一个重定向的请求,不断重定向可能会速度较慢
3.当前网页内容较多,图片较大,需要渲染的层数较多
4.当前页面数据量较大,后端返回结果较慢,可以使用sql索引等方式进行优化
或分页
有外部缓存的时候返回的code是304
查资料解答:
- 硬件设施
- 硬件配置低. 比如用户设备的 CPU 或内存配置低.
- 资源不足. CPU 或者内存资源不足, 比如用户是否使用了 Chrome 这种 "吃内存大户" 的浏览器并且打开了很多网页? 从
- 前端渲染方面
- 浏览器页面渲染的过程中存在异常. 这些异常有可能是网站的 JS 代码有 bug, 也有可能是浏览器上安装的插件有问题. 表征是 devtools 下的 console 面板在网页加载的过程中出现很多 Error 或 Warning 日志.
- 调用耗时过长的接口或请求的资源过多. 通过 devtools Network 的 Time 可以查看接口耗时.
- 页面的渲染性能不佳. 使用 devtools Performance 进行性能分析.
- 用户端的带宽不足或所处环境网络不佳. 比如用户用的光纤, WIFI 还是流量, 是否处于地下室等弱网环境等.
- DNS 解析慢. DNS解析包括往复解析的次数及每次解析所花费的时间它们两者的积即是DNS解析所耗费的总时间, 在http请求的过程中, 域名解析和建立连接占的时间很多. 可以使用 ping 命令 ping 该域名, 如果解析记录返回的非常缓慢, 可以判断是 DNS 的问题.
- HTTP 劫持. 如果网站使用的是 HTTP 服务并且网站出现了垃圾广告等情况, 这说明可能出现了 HTTP 劫持.
- 未设置 CDN. 如果没有设置 CDN, 在跨线路访问(比如用户是铁通, 但是服务器部署在联通, 这种情况就是跨线路), 地理位置相差很远 等情况, 就容易发生网页打开缓慢. 排查方法还是使用 ping 命令, 当存在丢包或者很高延迟时(国内 ping 延迟超过 50 ms), 就会导致线路访问异常.
- 服务端问题
对服务端进行分析的前提是, 已经确定是服务端接口耗时引起的 "网页打开慢", 所以我们通过提升服务器的响应速度, 来改善用户体验.
- Application 应用代码本身. 第一步应该分析相关的代码,找出相应的瓶颈,再来考虑具体的优化策略。
- 有一些性能问题,完全是由于代码写的不合理,通过直接修改一下代码就能解决问题的,比如for循环次数过多、作了很多无谓的条件判断、相同逻辑重复多次等。
- 其实可以考虑使用多线程或者异步代替原来的同步阻塞代码, 提升并发度.
- Database 数据库. 数据库的优化分 3 部分:
- SQL 调优, 由自带的慢查询日志或者开源的慢查询系统定位到具体的出问题的SQL.
- 架构层面的调优, 这一类调优包括读写分离、多从库负载均衡、水平和垂直分库分表等方面.
- 连接池调优. 随着业务访问量或者数据量的增长,原有的连接池参数可能不能很好地满足需求,这个时候就需要结合当前使用连接池的原理、具体的连接池监控数据和当前的业务量作一个综合的判断,通过反复的几次调试得到最终的调优参数。
- Web Cache 缓存. 什么情况适合使用缓存? 短时间内相同数据重复查询多次且数据更新不频繁的数据或者图片等静态资源.
- Load Balancer 负载均衡. 如果感觉单机优化后还是遇到了性能瓶颈, 这时候就适合使用 Nginx 做反向代理, 通过增加服务器这样就可以提高服务端的能力.
- Distrbuted Systems 分布式服务. 分布式服务涉及的知识非常多, 如服务的注册发现, RPC、心跳等网络通信调用的机制等, 最好使用成熟的开源框架. (以后的专题中会详细介绍)