[Open WebUI] saveChatHandler에서 불필요한 채팅 목록 재조회 제거
PR 링크: open-webui/open-webui#22983 상태: Merged | 변경: +0 / -2
들어가며
saveChatHandler는 채팅 히스토리를 DB에 저장하는 함수로, 메시지 교환 중 여러 번 호출된다(히스토리 저장, 브랜치 전환, 편집 등). 기존 구현에서는 이 함수가 호출될 때마다 getChatList로 전체 채팅 목록을 API에서 다시 불러왔다. 하지만 사이드바 채팅 목록 갱신이 실제로 필요한 시점은 이미 다른 핸들러에서 처리하고 있었다.
핵심 코드 분석
Before: 매 저장마다 채팅 목록 갱신
// saveChatHandler 내부
currentChatPage.set(1);
await chats.set(await getChatList(localStorage.token, $currentChatPage));
After: 불필요한 호출 제거
해당 2줄을 삭제했다. 채팅 목록 갱신은 다음 핸들러들이 이미 담당한다:
initChatHandler: 새 채팅 생성 시chat:title소켓 이벤트: 제목 생성 시chatCompletedHandler: 응답 완료 후moveChatHandler/archiveChatHandler: 명시적 사용자 액션 시
왜 이게 좋은가
- 중복 API 호출 제거: 하나의 메시지 교환에서
saveChatHandler가 여러 번 호출될 수 있는데, 매번 채팅 목록 전체를 다시 불러오는 것은 완전히 불필요한 네트워크 왕복이다. - UI 깜빡임 방지:
currentChatPage.set(1)이 매번 페이지를 리셋하면서 사이드바가 불필요하게 재렌더링되는 문제도 함께 사라진다. - 관심사 분리: 채팅 저장은 저장만 담당하고, 목록 갱신은 실제로 목록이 변경되는 이벤트에서만 수행하는 것이 올바른 설계다.
코드 2줄 삭제로 불필요한 API 호출을 제거한 깔끔한 최적화다.
참고 자료
관련 포스트
PR Analysis 의 다른글
- 이전글 [SGLang] TestQwen35WithHiCache CI 테스트 분리 및 수정
- 현재글 : [Open WebUI] saveChatHandler에서 불필요한 채팅 목록 재조회 제거
- 다음글 [Open WebUI] sendMessage에서 중복 getChatList 호출 제거
댓글