扫码关注官方订阅号
最近一个项目中是和android那边同用一套接口,每个接口是需要一个参数:timestamp传给后台进行比较。为了减少服务器的压力和减少请求次数,需要客户端本地在接受到一次timestamp后就在本地进行计时,以便在后面的每次接口请求中带上这个参数,但是我目前没有采用单页面的框架,如何才能做到这点呢?
ringa_lee
setTimeout/setInterval计时是不精确的,传给后端的时间会有误差。另一种做法是,你可以在第一次接收到timestamp时将时间戳和当前时间存储到sessionStorage,比如
setTimeout
setInterval
timestamp
sessionStorage
var timeCached = sessionStorage.setItem('timeCached', JSON.stringify({ serverTime: timestamp, clientTime: +new Date() });
然后每次请求时,通过计算
var timeCached = sessionStorage.getItem('timeCached'); // 计算出被发送时的时间戳 var newTimestamp=(+new Date() - timeCached.clientTime) + timeCached.timestamp;
就可以得到相对正确的时间戳了。其它的细节,比如时间相减的结果可能要除1000,封装个函数进行接口请求时计算,这就看你具体情况怎么写了。
非单页面的话就实时储存到localStorage。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
setTimeout/setInterval计时是不精确的,传给后端的时间会有误差。另一种做法是,你可以在第一次接收到timestamp时将时间戳和当前时间存储到sessionStorage,比如然后每次请求时,通过计算
就可以得到相对正确的时间戳了。其它的细节,比如时间相减的结果可能要除1000,封装个函数进行接口请求时计算,这就看你具体情况怎么写了。
非单页面的话就实时储存到localStorage。