首屏加载缓慢优化

TTFB

# 什么是 TTFB

  TTFB,Time to First Byte 的缩写,又叫首字节响应时间。指的是浏览器开始接受服务器响应数据的时间,包含 后台处理时间 + 重定向时间,是反应服务端响应熟读的重要指标。时间越短,说明服务器响应的速度越快。

#TTFB 多长算长

  TTFB 主要受服务器硬件和网络环境影响,可以查看国内一些优秀的网站,不难发现大多TTFB都在50ms以下,受网络因素波动也不超过100ms。所以,当网站大部分资源的TTFB在50ms以下,少数在50~100ms中时,说明已经达到了比较理想的状态。

静态资源
动态资源

# TTFB 过长的原因

  1. 如上诉所说,TTFB受服务器及网速带宽影响,网络是最容易想到的因素之一

  2. 我们知道,对于动态网页来说,服务器收到用户打开一个页面的请求时,首先要在指定位置找到该页面,然后分析该页面依赖的资源,从数据库中读取页面首次加载需要的数据,再把这些数据传入到模板中渲染,再返回给用户。由于查询数据和渲染模板需要一些时间,这个过程没有完成之前,浏览器就会处理等待接收服务器响应的状态,如果没处理好逻辑,就直接影响到响应性能。

  3. 如果网页中保存了过多的cookie,这些cookie被频繁的在服务器和客户端之间传输,也会造成响应增长问题。

# 优化

  1. 使用缓存。
      使用缓存可以降低非首次加载的大量请求,减低与服务端交互的频次

  2. 网络问题
      频繁有用户出现网络问题,可以使用CDN,把页面同步到离用户比较近的CDN节点上,减少时延

  3. Cookie问题
      这就是你编程功底的体现了,是否合理使用cookie,也可以转化部分cookie信息到header上,或者通过其他方式实现


白屏过长

# 原因
  1. 网络时延高
  2. 文件较大
  3. 脚本过大阻塞渲染
  4. 资源重复加载
  5. cookie影响

# 解决办法

1. 网络时延高

  如上,使用CDN部署在离用户比较近的服务器节点上

2. 文件较大

  遇到文件较大的情况,有
(1)用户看到的页面不能是你的源码,现在vue项目或react项目基本都使用webpack打包,能减少一定的体积。
(2)可以开启Nginx的gzip功能。其工作原理就是:当用户请求资源时,其在服务器端进行压缩,客户端执行下载,到本地后浏览器在执行解压。用一定的性能换下载时间。但机器的执行速度和下载速度不是一个数量级。这里有一个gzip的配置案例

server {
  listen 80;
   server_name localohst;
   gzip on;  //开启gzip压缩
   gzip_min_length 1k; //最小的长度,避免压缩变大
   gzip_buffers 4 16k;    //设置缓存的单位,压缩的时候要分配的缓冲区,缓冲区以16K为单位,往缓冲区写入内容的时候超过16K的时候,那么就会按照4倍的大小创建新的缓冲区,也就是建立一个64K的存储,这样把压缩的内容倒进去
   gzip_comp_level 6;   //压缩级别1-9,比如level为1的话,压缩的比例比较低,但是效率比较高,比如100K的文件压缩之后还剩40K或者50K,但是处理的时间很短;如果level为9的话,压缩的效果最好,效率会低一点,比如还是100K的文件,压缩的会更小,甚至20K ,这样对cpu消耗会高点,一般设置中间差不多
   gzip_type text/plain application/javascript text/css application/xml;  //定义了压缩的类型,默认压缩图片,text/html的压缩无需指定,否则报错
   location / {
     root /data/apps/abc.com;
     index index.html;
   }
}

  添加了gzip压缩,如果在资源响应头里看到如下信息,则表示添加成功


3. 渲染被脚本阻塞

  检查你的脚本文件之间的相关性,检查是否有自执行逻辑等对页面渲染影响的因素,可以给<script>增加deferasync来改变脚本执行的时机

4. 资源重复下载

  如果不是必须,避免使用no-store的去请求头,使用缓存

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容