样例1-http接口的waiting(TTFB)时间从5.5s优化为100ms
问题 :如何解决网页响应慢,waiting(TTFB)时间过长,接口返回耗时等问题?
首先需要了解什么是Waiting (TTFB) 时间?TTFB 是Time to First Byte 的缩写,指的是浏览器开始收到服务器响应
数据的时间(后台处理时间+重定向时间),是反映服务端响应速度的重要指标。如下图waiting(TTFB)平均在5.5s左右,
正常情况下要求接口返回200ms,那么耗时太长的就需要进行排查及优化了。

排查:经定位发现接口的业务逻辑中有三个for循环对结果数据进行解析处理,第一层for循环遍历60次,第二层for
循环遍历1次,第三层for循环遍历10次(查询数据库),伪代码如下:
for(60){
for(1){
for(10){
dao.xx();
}
}
}
按照上图所示遍历,大概一次接口调用,就需要访问600次数据库,这显然开销太大了。
解决方法:对dao.xx()的调用顺序进行调整,优化为在for(60){}前面进行数据库查询逻辑。然后在
第三层 for循环里面改为从前面的结果数据中获取,经测试验证此番优化后接口Waiting (TTFB)
时间基本在90ms-180ms左右,优化伪代码如下:
Object resut = dao.xx();
for(60){
for(1){
for(10){
//使用resut
}
}
}
总结:应尽量减少在循环里面调用数据库,因为随着系统业务发展,需要查询的东西可能变多,for循环的次数随着增
加,就导致接口非常耗时。同样的,当存在批量新增的时候,不要在for循环里面调用单个新增的方法,而是应该使用
批量新增。
搜索
复制
样例1-http接口的waiting(TTFB)时间从5.5s优化为100ms的更多相关文章
- Waiting (TTFB) 时间
什么是 Waiting (TTFB) 时间 TTFB 是 Time to First Byte 的缩写,指的是浏览器开始收到服务器响应数据的时间(后台处理时间+重定向时间),是反映服务端响应速度的重要 ...
- waiting TTFB 时间优化
百度百科解释:获取在接收到响应的首字节前花费的毫秒数. 根据chrome浏览器,具体请求链接的这个时间,对反应慢的页面进行优化.
- Java线程演示样例 - 继承Thread类和实现Runnable接口
进程(Process)和线程(Thread)是程序执行的两个基本单元. Java并发编程很多其它的是和线程相关. 进程 进程是一个独立的执行单元,可将其视为一个程序或应用.然而,一个程序内部同事还包括 ...
- 优化vue+springboot项目页面响应时间:waiting(TTFB) 及content Download
优化vue+springboot项目页面响应时间:waiting(TTFB) 及content Download TTFB全称Time To First Byte,是指网络请求被发起到从服务器接收到地 ...
- RESTful设计原则和样例(开发前后台接口)
摘要 REST(表征性状态传输)设计风格;REST通常基于使用HTTP,URI协议和标准.使用URL标识资源,开发前后台接口.主要使用post,get方式 参考博文: http://www.cnblo ...
- 【gRPC】C++异步服务端优化版,多服务接口样例
官方的C++异步服务端API样例可读性并不好,理解起来非常的费劲,各种状态机也并不明了,整个运行过程也容易读不懂,因此此处参考网上的博客进行了重写,以求顺利读懂. C++异步服务端实例,详细注释版 g ...
- 在.Net MVC结构API接口中推断http头信息实现公共的权限验证过滤器演示样例
//control action public class TestController : ApiController { [MyAuthFilter] public string test(s ...
- JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例
什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MS ...
- JDBC连接MySQL数据库及演示样例
JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...
- 使用ffmpeg实现转码样例(代码实现)
分类: C/C++ 使用ffmpeg实现转码样例(代码实现) 使用ffmpeg转码主要工作如下: Demux -> Decoding -> Encoding -> Muxing 其中 ...
随机推荐
- ORACLE查看会话的大小及终止会话
一.出现PGA不足时,我们可以查看用户会话大小,结束相应会话 方法一 Select Server, Osuser, Name, Value / 1024 / 1024 Mb, s.Sql_Id, Sp ...
- js字符串截取(获取指定字符后面的所有字符内容)
function getCaption(obj, text){ let index = obj.lastIndexOf(text) + text.length-1; obj = obj.substri ...
- arm开发环境搭建
1.smaba 在Linux PC安装smaba sudo apt-get install samba编辑/etc/samba/smb.conf配置:[yz]path = /home/yzv ...
- Edge浏览器相关
Ctrl+T 新建页面 Ctrl+W 关闭页面 不可复制的页面,前加read: 若是不可访问 变read://http:// 阅读可翻译,也可有图片字典 还可用插件: 截图软件:Snipaste 微 ...
- Java中File类
File类是java.io包中唯一代表磁盘文件本身的对象.File类的对象主要用来获取文件本身的一些信息,如文件所在目录.文件长度.读写权限等. 一. 文件的创建与删除 通常使用以下三种方法来创建一个 ...
- 1903021126 申文骏 Java 第六周作业 类与对象
项目 内容 课程班级博客链接 19级信计班(本) 作业要求链接 第六周作业 博客名称 1903021126 申文骏 Java 第六周作业 类与对象 要求 每道题要有题目,代码(使用插入代码,不会 ...
- Windows+svn +Jenkins+发布NetCore/VUE项目
1. NetCore环境下载,注意是下载SDK,不是Runtime:https://dotnet.microsoft.com/download/dotnet-core?utm_source=getdo ...
- HTTP协议中的长连接和短链接
一.概念 HTTP长连接,也称持久连接,是使用同一个TCP连接来发送和接受多个HTTP请求/应答,而不是位每一个新的请求/应答打开新的TCP连接.这种方式由于通信连接一直存在,此种方式常用于P2P通信 ...
- gitt如何将本地分支同远程分支进行关联
将本地分支同远程分支进行关联,1.本地已经创建了分支test(test,是master以外自己创建的分支),而远程没有2种方法在远程创建分支test,并与本地分支进行关联: 方法1: git push ...
- linux一些指令
一. 文件操作命令 查看当前目录下的文件或文件夹 详细查看ls –l 每列代表不同的意义: 第一列drwxr-xr-x 表示权限, n 其中第一个字符d表示 目录(可能有b-块 ...