开放题目,请随便谈谈。
今天的主题其实是「答题思路」,或者说是「解决问题的思路」。
为什么要做性能优化?
有些人看到这个题目,一上来就说「减少请求,添加缓存」之类的。不是说你错了,而是说你回答问题的时候没有思路。
首先你要明白一点:做任何事情都是有「目的」的。
吃饭喝水是为了生存,那么做性能优化的「目的」是什么?
想过这个问题么?如果没想过,今后就要刻意问问自己了。
优化的目的可以是:
1. 增强用户体验。但是这样说很虚,具体来说可以是:
1.1. 加快页面展示速度(慢)
1.2. 加快页面运行速度(卡)
2. 节约服务器带宽流量
3. 减少服务器压力
无论如何,你需要有一个目的。
什么时候做性能优化?
你有目的了,不代表你马上就要去采取行动。
首先,你应该完成了网页的基本功能后再优化。如果你在前期就花时间优化,那么后期有可能没时间做其他功能。
其次,在没有找到性能瓶颈之前,不要优化!
在没有找到性能瓶颈之前,不要优化!
一个网页的性能到底跟哪几方面有关?你优化的地方属于哪一方面?这是需要首先搞清楚的。
一个网页的大概流程包括:
DNS 查询
发送请求
等待服务器响应
下载服务器响应内容
解析 HTML、CSS、JS 等
渲染 HTML、CSS、JS 和图片等
响应用户的点击事件等
如果你的性能瓶颈在「等待服务器响应」这一步,那么你怎么优化 JS、CSS 都没用。
所以再说一遍:在没有找到性能瓶颈之前,不要优化!
怎么优化?
等你找到了瓶颈所在,就可以「对症下药」了。
DNS 查询——减少网页所用的域名个数,可可以减少 DNS 查询的时间
发送请求——添加缓存、合并文件,都可以减少请求数量
等待服务器响应——这一步的优化只能是在 MySQL 和后台方面做考虑了
下载服务器响应内容——添加 Etag、Expires 响应头,得到 304 响应,可以降低下载量
解析 HTML、CSS、JS 等——去掉无用的 HTML、CSS 和 JS 即可减少解析时间
渲染 HTML、CSS、JS 和图片等——避免使用低效的 HTML、CSS 和 JS 即可
响应用户的点击事件等——尽量不在前端做复杂的运算等……
整体思路
看看上面的答题思路:
为什么要做?
什么时候做?
怎么做?
这是一个最基本的答题思路,希望对你有帮助。
本文作者饥人谷-方应杭,欢迎进群与我探讨技术(加小圆WX:xiedaimala03)。
未经同意禁止转载,转载请联系本人并加上版权声明和文章链接。