【一些web性能问题的原因】
- 浏览器端
-
- 计算机是否联网了——网络设置
- 浏览器程序是不是允许接入网络了——网络设置
- 站点请求被拒绝?——web服务器关了
- 当前运行程序是否太多,资源竞争大?
- 内存足够嘛?——内存不足就用虚拟内存了。加大你的内存。
- 浏览器缓存足够大嘛?——可以设置缓存大小。
- CPU够不够快速?
- 网络带宽呢?——
- 网站是不是各种图片 CSS JS 加载太慢
- 服务器端
-
- 服务器宕机没?——嘿嘿嘿:)
- 你再去看看服务器宕机没? ——哈哈哈
- 服务器是否休眠未启动
- 网卡网线松了没 老鼠咬断没?
- DNS服务器负载过大,超载?
- 反向代理问题?
- 服务器网络连接是不是超载?有没有集群服务器,负载均衡呢?
- CPU和内存性能够不够用?
- 磁盘IO呢,太慢?
- 服务器被别的进程抢夺资源?---服务器上不要干别的任务。
- 缓存和缓存命中率啥的呢?
- 数据库连接池太小?
- 数据库连接池是否泄露?
- 涉及到性能的BUG呢?——有的bug会导致服务器出现奇奇怪怪的问题
- 交换机 路由器超载?配置错误
- 在网络中转发的的次数太多?
- 服务器离的用户太远?——网络岔路口太多,中间的路由器转发太浪费时间。
- 被运营商限制了你的带宽大小?——
- 页面动态化内容太多 页面组件太多 HTTP请求太多?
【一些提高性能关键的想法】
- 增加带宽,也就是传输速度加大
- 减少页面http请求,因为每个组件都是http,http又是无连接的,所以每个都需要连接下载。很麻烦
-
- 1.减少组件啊,但是页面内容就不丰富了
- 2.把多个图片合并为一个文件。少连接。
- 3.合并css或js
- 4.充分利用浏览器缓存。
- 5.CDN分发
- 加快服务器脚本计算速度
-
- 服务器端脚本语言 ruby python……来编写动态内容或者小程序
- 动态内容 缓存
-
- 把重复的重要的计算出来放到缓存里。下次请求来之后判断是不是该缓存,是否过期,然后直接返回。不需要重复计算。
- 动态内容静态化
-
- 就是变成静态的。直接暴露。
- 共用数据 缓存
- 服务器软件——该怎么选择合适自己服务器的软件。
- 页面组件分割——页面里的组件分成小的粒度然后专用服务器支持专门的组件,比如小图片服务器,文件服务器……。然后集群负载均衡
- 合理部署服务器——就是网络,包括服务器离用户的位置越近越好啊,运营商给的带宽越大越好。路线少过交换节点。
- 负载均衡:集群和负载均衡——当然也可以换更好的服务器
- 优化数据库:
- 可拓展性:
【用户角度看性能】
1.用户提交一个网页的地址请求,浏览器获得用户访问地址的意图,
2.然后浏览器向站点服务器请求所有的页面内容。包括:页面里的许多组件 大量图片 css样式 js脚本 等等。每个组件都是一个http请求。http请求是无连接的,每次请求都要重新连接
3.等待服务器响应然后把所有的请求结果返回。
4.经过浏览器本地计算和渲染。然后完整的页面才可以展示出来
虽然这个过程时间有时候很短,但是有时候很长好几秒啊。
等待时间用在哪?
- 数据在网络上来回传输的时间——响应时间,主要和发送的数据量和网络带宽有关系。
- 服务器响应请求然后处理计算得到返回的数据的时间——吞吐率:每秒处理的请求数量 ,跟CPU 网络IO 很多有关系
- 浏览器本地计算和渲染的时间——跟浏览器有关系。