性能优化的原则
- 性能优化是建立在对业务的理解之上的
- 性能优化与架构、业务相辅相成、密不可分的
性能优化的引入
我们先看一张简单的 web 架构图
从上到下从用户的浏览器到最后的数据库,那么我们说先前端的优化。
10年架构师领你架构-成长之路-(附面试题(含答案))
(腾讯T3-T4)打造互联网PHP架构师教程目录大全,只要你看完,薪资立马提升2倍(持续更新)
原文链接:segmentfault.com
前端优化
雅虎军规:http://www.cnblogs.com/paul-3...
减少 http 请求数
- 图片、css、script等等这些都会增加http请求数,减少这些元素的数量就能减少响应时间。
把多个JS、CSS在可能的情况下写进一个文件,页面里直接写入图片也是不好的做法,应该写进CSS里,小图拼合后利用 background 来定位。
- 现在很多 icon 都是直接做成字体,矢量高清,也减少网络请求数
- 现在的前端框架都会通过组件的方式开发,最后打包生成一个 js 或者 两个 js 文件 + 一个 css 或者两个 css 文件。
利用浏览器缓存
expires
,cache-control
,last-modified
,etag
http://blog.csdn.net/eroswang...
防止缓存,比如资源更新了,原来的做法是?v=xxxx 现在前端的打包工作可以能会生成 /v1.2.0/xxx.js
使用分布式存储前端资源
接地气利用 cdn 存储前端资源
多域名访问资源
- 原因一:浏览器对同一域名的并行请求数有上限,多个域名则支持更多并行请求
- 原因二:使用同一域名的时候无用的 cookie 简直是噩梦
数据压缩
- 开启gzip
- 前端资源本身的压缩,js/css 打包编译(去掉空格,语意简化)图片资源的压缩等。
优化首屏展示速度
- 资源的按需加载,延时加载 https://mengkang.net/229.html
- 图片的懒加载,淘宝的商品介绍太多图,用户点击进来又有多少人一直往下看图的呢?
nginx 优化
分为下面三个部分来
nginx 本身配置的优化
- worker_processes auto 设置多少子进程
- worker_cpu_affinity 亲缘性绑定
- worker_rlimit_nofile 65535 worker 进程打开的文件描述符的最大数
- worker_connections 65535 子进程最多处理的连接数
- epoll 多路复用
- sendfile on 是对文件I/O的系统调用的一个优化,系统api
- 如果是反向代理web服务器,需要配置fastcgi相关的参数
- 数据返回开启gzip压缩
- 静态资源使用 http 缓存协议
- 开启长连接 keepalive_timeout
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/json;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
http://mailman.nginx.org/pipe...
tcp/ip 网络协议配置的优化
- /proc/sys/net/ipv4/tc