关于系统调优之前端调优_

关于调优这一方面,有很大的内容,有涉及到前端页面的调优;中间件的调优(Tomcat,Nginx,DNS等);数据库的调优(分库分表,集群,Redis,索引等);以及很重要的后端接口的调优。

今天做下笔记复习下前端页面调优的相关知识点,涉及到ySlow这个工具,具体这个工具详细安装教程就不放了。。。。

Install_url:http://yslow.org/
 
Slow主要针对前端的:content、cookie(后台相关)、css、images、javascript、server(后台相关)六大方面评分,并提出相关建议
A-优秀、B-可接受、C-及格、F-极度不合格
 
1、Make  fewer HTTP  requests(尽可能的减少http请求):
     例如要发送一个10K的请求,尽量一次性请求10K数据量,避免同时发送10条的1K请求(因为这样会涉及到并发)
 
2、Use  a  Content  Delivery  Network(CDN):
      因为在同一个域名下的图片,最多只能同时加载6张图片,所以尽量把图片/CSS/JS放在CDN服务器上(静态资源服务器)  -不为同一域名
 
3、Avoid  empty  src or href (避免空的src和href):
      因为如果是空的src和href的话,浏览器会再次向服务器发送src/href空的资源链接请求--<img src=''''''>,<a href=''>,导致耗时
 
4、Add  Expires  headers(加一个缓存过期时间):
      一般静态资源(gif/png/js/css),因为浏览器空间有限,所以浏览器会定时清理缓存,所以要尽量避免占用空间,设置缓存过期时间
 
5、Compress components with gzip(对某些资源/文件开启gzip压缩):
        
    上面例子,红框内就是提示这个JS文件没有开启gzip压缩
 
6、 Put  CSS  at  top(css 文件尽量放在上面/头部):  
     因为浏览器的渲染顺序是从上到下的,把css放在头部,浏览器会根据css提前渲染样式,这样看页面加载的时候不会挤在一起,加载的时间也很快
 
7、Put  JavaScript  at buttom(js文件尽量放在下面/底部):
    因为js文件请求的时候,会独占资源,也就是发送js请求的时候,浏览器不会同时请求其他资源(因为JS文件会对页面进行操作-页面冻结)
    像平时浏览器加载页面的时候,页面已经差不多成功显示了,但左上角的加载图标还在旋转,那其实就是在加载JS文件,这时页面功能却已经可以使用了
 
8、Avoid   CSS  expressions(避免css表达式):
    跟前端知识强相关,跳过
     
9、Make   Javascript    and   CSS(避免把JS,CSS写在HTML里面):
    如果把Js,css写在html里面,会增加页面的大小,可能会导致请求时间加长、反之如果把Javascript、css单独写成文件,浏览器会去缓存这些静态资源的,就是说用外联的形式,把这些静态资源给缓存住。
 
10、Reduce    DNS    lookups(降低DNS的查找时间):
    一般浏览器有缓存的话,查找速度就会很快
 
11、Minify    JavaScript    and    css(最小化js和css的体积):
    很好理解,体积越小,请求速度越快,开启了gzip,速度更快
 
12、Avoid    URL    redirects(避免URL的重定向):
    因为页面发生重定向的时候,页面会出现白板现象,所以页面的重定向跳转动作会降低用户的体验感,所以要减少避免url的重定向
 
13、Remove   duplicate     JavaScript    and    css(避免js文件和css文件的重名现象):
    因为如果js/css文件存在重名的情况下,浏览器还是会重新发一次请求到服务器,这样就发生了请求重复,浪费请求时间的现象
 
14、Configure    entity    tags(ETags):
 
15、Make    AJAX    cacheable(尽量把ajax请求缓存下来)-console:
   总的来说,ajax请求就是异步调用,局部刷新,例如:百度首页,xhr
   ajax也是可以被缓存的,ajax是通过js去发送请求,后台加载数据,提高用户体验性,但不保证ajax的请求速度
 
16、Use  Get  for   AJAX    requests(用get方式发送ajax请求获取数据):
    因为浏览器Post请求发送分两步,第一步先发送headers,第二步发送data,
    但是,如果是Get请求的话,会一次性发送headers信息和data信息,所以用Get会比Post更快
 
17、Reduce   the   number   of    DOM    elements(尽量减少dom元素)
   因为页面上的元素越多的话,渲染起来越慢,响应页面体积越大,如果页面元素实在是没办法减少,那就要做到DOM层级简单
 
18、Avoid HTTP 404 (Not Found) error
   因为404会损耗系统资源,最好是截获404异常信息,尽量抛出站点定制的异常
 
19、Reduce cookie size(减少cookie的大小)
   因为每一个请求都会带上cookie向服务器提交,cookie如果太大,就会影响传输的速度,最终影响页面的响应速度
 
20、Use cookie-free domains(减少静态资源的cookie的使用)
   默认所有的请求都携带cookie的,类似一些静态资源,因为静态资源是公共资源,谁都可以访问的,所以就不需要cookie做一些身份验证/个性化定制
 
21、 Avoid AlphaImageLoader filter
   跳过,不知道
 
22、Do not scale images in HTML
  避免图片的体积过大,因为如果图片过大的话,还要css去改变大小,所以应该是前端要多大图片,服务器就应该返回多大图片
 
23、Make favicon small and cacheable(减小favicon的体积)
  让favicon尽可能的小,并且加max-age缓存起来

 

 

 
 
posted @ 2020-02-11 14:34  Admin_sys  阅读(251)  评论(0编辑  收藏  举报