websock接收后端报文,前端在右下角显示一次性最多3个消息框,最近报文有点多,大概一秒能收到1-6个消息,一直收一直收。等待半小时,页面卡顿。(控制台没有死循环),DOM一直在刷新那三个消息框。
请问这种情况怎么优化页面卡顿的问题?(后端已经在修改报文的频发问题,前端应该也有一些预防的法子吧?)
websock接收后端报文,前端在右下角显示一次性最多3个消息框,最近报文有点多,大概一秒能收到1-6个消息,一直收一直收。等待半小时,页面卡顿。(控制台没有死循环),DOM一直在刷新那三个消息框。
请问这种情况怎么优化页面卡顿的问题?(后端已经在修改报文的频发问题,前端应该也有一些预防的法子吧?)
消息展示条数可以使用几种策略:
类似于懒加载
当数据条数多余一定数量时,设置settimeout
settimeout最小时间是4毫秒
可参考如下
const renderList = async () => {
const list = await getList()
console.log(list)
const total = list.length
const page = 0
const limit = 200
const totalPage = Math.ceil(total / limit)
const render = (page) => {
if (page >= totalPage) return
setTimeout(() => {
for (let i = page * limit; i < page * limit + limit; i++) {
const item = list[i]
const div = document.createElement('div')
div.className = 'sunshine'
div.innerHTML = `<img src="${item.src}" /><span>${item.text}</span>`
container.appendChild(div)
}
render(page + 1)
}, 0)
}
render(page)
}
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答4.9k 阅读✓ 已解决
1 回答3.3k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
如果是后端报文的话,能这么频繁的话,就合并发送, 不会让一秒发送这么多条消息到客户端,可以五秒到一秒内的消息合并内容到一条去发送到前端
如果能一直接收一个相同类型的消息, 就可能说明这个消息并不重要,这个提示一般来说是用来提示一些重要的消息,可以做一个表来展示这些数据而不是通过通知去展示这些数据, 或者提供一个日志列表去展示这些消息, 等用户需要的时候点击去查询这些消息.