当前位置: 首页 > news >正文

JAVA后端服务端与移动端客户端高精度时间同步思路

一、脑补

在Chrome--->Network----> Timing中可以查看一个请求在各个阶段所花费的时间。
Timing中各个字段的意思发:

1、Queueing:从增加到等待处理队列到实际开始处理的时间间隔——浏览器也有线程机制,所有的请求不能同时发送,也需要队列排队处理请求。

2、Stalled:浏览器从请求队列获取到要发出的请求到请求可以发出的等待时间(通常为代理协商以及等待可复用的TCP连接释放)

3、DNS Lookup:DNS执行查找的一个完整的往返时间(将域名解析为IP)。当本地DNS缓存没有的时候需要消耗这段时间,否则基本都为0;

4、Initial connection:建立TCP连接的时间(即DNS查询+Proxy时间+TCP握手时间等)

5、Request sent:请求第一个字节发出前到最后一个字节发出后的时间(即上传时间);

6、Waiting(Time To First Byte,TTFB):请求发出到收到响应的第一个字节所花费的时间;

7、Content Download:收到响应的第一个字节到接受完最后一个字节的时间(即下载时间);

二、客户端/服务端时间同步倒计时

let now = new Date().getTime(); // 伪代码 -- 获取响应时间,相当于success里的new date().getTime();
let end = getResponseTime();// 伪代码 -- 获取服务器响应时提供的服务器时间,success后从body里面获取的数据,由后端塞进去的;
var serverTime = getServerTime();  // 获取TTFBTime,具体怎么获取去网上搜,这里不说了,说下去太多,本文只提供思路;
var TTFBtime = getTTFBTime();// 得到当前服务器时间,该时间一般偏快于服务器时间0~10ms左右,具体原因从第一节“脑补”中就可以得知;
var currServerTime = serverTime + (end - now) - TTFBTime;

 * 还可以考虑NTP时间同步,可以继续探索

三、扩展与思考—接口优化/请求时长优化

根据上面脑补后,咱们知道“发送请求完毕”到“开始接收请求”的时间就代表服务器处理业务的时间和和返回数据的网络延时时间。

那么,咱们做接口优化方面就可以根据这个点来作为依据,从而做到更精准的优化效果。

http://www.lryc.cn/news/227565.html

相关文章:

  • nsd的资料
  • 关于Maven中pom.xml文件不报错但无法导包解决方法
  • 使用决策树分类
  • STM32H563烧录后无法擦除
  • 2023最新最全【Adobe After Effection 2023】下载安装零基础教程【附安装包】
  • 【Spring之底层核心架构概念解析】
  • 手把手带你创建一个自己的GPTs
  • Vue 组件+es6箭头函数+路由
  • Clickhouse学习笔记(5)—— ClickHouse 副本
  • ELMo模型、word2vec、独热编码(one-hot编码)的优缺点进行对比
  • FFmpeg简介1
  • Optimal Multimodal Travelway Design for an Urban Street Network
  • 2352 智能社区医院管理系统JSP【程序源码+文档+调试运行】
  • 高教社杯数模竞赛特辑论文篇-2023年B题:多波束测线布设(附获奖论文及MATLAB代码实现)(续)
  • 【fast2021论文导读】 Learning Cache Replacement with Cacheus
  • 在 React 中选择使用 JSX 或 JavaScript
  • Halcon WPF 开发学习笔记(4):Halcon 锚点坐标打印
  • 【从0到1设计一个网关】性能优化---使用Disruptor提供缓冲区
  • Redis 特殊数据类型
  • 【Windows网络编程】二.TCP套接字编程与主机上线实验
  • Qt 事件循环
  • 【趣味随笔】YOLO的“进化史”极简版(YOLO v1-->YOLOP)
  • Leetcode421. 数组中两个数的最大异或值
  • SPRINGBOOT整合CXF发布WEB SERVICE和客户端调用(用户和密码验证)
  • 代码随想录训练营Day5:哈希数组
  • 腾讯云3年轻量2核2G4M和2核4G5M服务器540元三年
  • 程序员的护城河:职业发展的关键元素
  • 基于SpringBoot+Vue的在线学习平台系统
  • Kafka+redis分布式锁结合使用心得总结
  • cmd打开idea