mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-10 15:49:29 +08:00
perf: improve streaming performance (#4986)
This commit is contained in:
parent
4c2c026f6d
commit
784b02e62e
@ -190,22 +190,24 @@ const handleResponseMessageUpdate = (
|
|||||||
dispatch: AppDispatch,
|
dispatch: AppDispatch,
|
||||||
getState: () => RootState
|
getState: () => RootState
|
||||||
) => {
|
) => {
|
||||||
dispatch(setStreamMessage({ topicId, message }))
|
setTimeout(() => {
|
||||||
if (message.status !== 'pending') {
|
dispatch(setStreamMessage({ topicId, message }))
|
||||||
// When message is complete, commit to messages and sync with DB
|
if (message.status !== 'pending') {
|
||||||
if (message.status === 'success') {
|
// When message is complete, commit to messages and sync with DB
|
||||||
autoRenameTopic(assistant, topicId)
|
if (message.status === 'success') {
|
||||||
}
|
autoRenameTopic(assistant, topicId)
|
||||||
|
}
|
||||||
|
|
||||||
if (message.status !== 'sending') {
|
if (message.status !== 'sending') {
|
||||||
dispatch(commitStreamMessage({ topicId, messageId: message.id }))
|
dispatch(commitStreamMessage({ topicId, messageId: message.id }))
|
||||||
const state = getState()
|
const state = getState()
|
||||||
const topicMessages = state.messages.messagesByTopic[topicId]
|
const topicMessages = state.messages.messagesByTopic[topicId]
|
||||||
if (topicMessages) {
|
if (topicMessages) {
|
||||||
syncMessagesWithDB(topicId, topicMessages)
|
syncMessagesWithDB(topicId, topicMessages)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Helper function to sync messages with database
|
// Helper function to sync messages with database
|
||||||
@ -351,9 +353,8 @@ export const sendMessage =
|
|||||||
: topic.prompt
|
: topic.prompt
|
||||||
}
|
}
|
||||||
|
|
||||||
// 节流
|
// 节流,降低到 50ms,因为已经在handleResponseMessageUpdate内保证react能调度。
|
||||||
const throttledDispatch = throttle(handleResponseMessageUpdate, 100, { trailing: true }) // 100ms的节流时间应足够平衡用户体验和性能
|
const throttledDispatch = throttle(handleResponseMessageUpdate, 50, { trailing: true })
|
||||||
// 寻找当前正在处理的消息在消息列表中的位置
|
|
||||||
// const messageIndex = messages.findIndex((m) => m.id === assistantMessage.id)
|
// const messageIndex = messages.findIndex((m) => m.id === assistantMessage.id)
|
||||||
const handleMessages = (): Message[] => {
|
const handleMessages = (): Message[] => {
|
||||||
// 找到对应的用户消息位置
|
// 找到对应的用户消息位置
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user