优化vue+springboot项目页面响应时间:waiting(TTFB) 及content Download
优化vue+springboot项目页面响应时间:waiting(TTFB) 及content Download
TTFB全称Time To First Byte,是指网络请求被发起到从服务器接收到地一个字节的这段时间。包含了TCP连接时间、发送HTTP请求时间和获得相应消息第一个字节的时间。 环境: 开发 vue Cascader 级联选择器,listview接口一次性请求树结构数据接近5w条(3.9MB),nginx 反向代理 部署vue 、部署springboot,同机部署 mysql。 问题:生产环境,请求listview接口就waiting(TTFB) 4秒,content Download 16 秒,总计需要20秒,时间太长了。 开发环境,本机部署nginx,连接远程服务器端mysql. 请求listview接口就waiting(TTFB) 4秒,content Download 1 秒,总计需要5秒。 优化方法有如下: 1)服务端数据库链接地址串 及 vue 服务器链接地址,改外网ip 、域名 、localhost 、proxy_pass为 127.0.0.1 ,直接影响waiting(TTFB)。原因:127.0.0.1无需解析,localhost还要本地DNS解析。 MYSQL的安全策略的问题,对于每一个连接以及每一个操作,MYSQL都会check当前用户的主机名,so,当我们对数据库进行op的时候,MYSQL数据库服务器都会check一次主机名,这就导致了我们远端操作数据库的客户端出现几秒钟的等待状态。2)前端需要tree 数据结构,如果直接返回List, 前端处理慢,直接改用后端处理。后端处理方式:使用Map
经过以上优化后,listview接口请求耗时减少到10秒内。
再怎么优化呢?查了网上不少资料,最后再想了一下,springboot 项目接口返回数据是否可以压缩。度娘说可以。 application.ymlserver:再次对比结果: 传输数据大小456kb,响应时间1.33秒,到此总算告一段落 但请教大拿说,waiting(TTFB)还可以再优化一下 控制在500ms内才算正常。 待后期再想想办法。
compression:
enabled: true
min-response-size: 1024
mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*