[20250724] WebOS TV 최적화 및 오류 처리 개선

1. App.js: applyTemplate 기능 제거로 5286 디버그 모드 무한 리로드 문제 해결
2. TLogEvent.js: XML 변환기 오류 무시 처리로 콘솔 오류 메시지 제거
3. CSS 최적화: will-change 속성 주석 처리로 메모리 사용량 개선
   - CustomImage.module.less: will-change: opacity 제거, GPU 가속 대안 추가
   - MediaControls.module.less: will-change: opacity 제거
   - MediaSlider.module.less: will-change: opacity 제거
   - FeedbackTooltip.module.less: will-change: transform 제거, GPU 가속 대안 추가

WebOS TV 환경에서의 성능 최적화 및 사용자 경험 개선
This commit is contained in:
djaco
2025-07-24 12:09:55 +09:00
parent b18e42a50e
commit 61ddd08e8c
6 changed files with 27 additions and 5 deletions

View File

@@ -71,6 +71,8 @@ import { sendLogTotalRecommend } from "../actions/logActions";
// } from "../utils/focus-monitor";
// import { PanelHoc } from "../components/TPanel/TPanel";
let foreGroundChangeTimer = null;
// 기존 콘솔 메서드를 백업
@@ -154,6 +156,8 @@ function AppBase(props) {
// const termsFlag = useSelector((state) => state.common.termsFlag);
const termsData = useSelector((state) => state.home.termsData);
useEffect(() => {
// Chromium68 호환성을 위해 Optional Chaining 제거
if (termsData && termsData.data && termsData.data.terms) {

View File

@@ -88,6 +88,19 @@ export const TLogEvent = (
}
})
.catch((error) => {
const errorMessage = error && error.message ? error.message : '';
const requestUrl = error.config && error.config.url ? error.config.url : '';
// /lgsp/v1/log/recommend.lge 엔드포인트의 XML 오류만 무시
if ((errorMessage.includes('XML') ||
errorMessage.includes('요소 없음') ||
errorMessage.includes('element')) &&
requestUrl.includes('/lgsp/v1/log/recommend.lge')) {
console.log('[TLogEvent] XML parsing error ignored for recommend endpoint');
return; // recommend 엔드포인트의 XML 오류만 무시
}
// 다른 엔드포인트의 오류는 정상 처리
if (onFail) {
onFail(error);
}

View File

@@ -4,7 +4,10 @@
&.hidden {
opacity: 0;
}
will-change: opacity;
/* will-change: opacity; // WebOS TV 메모리 최적화를 위해 주석 처리 */
/* Chromium 68 호환성을 위한 GPU 가속 대안 */
transform: translateZ(0);
backface-visibility: hidden;
&:not(.hidden) {
&.slow {
transition: opacity 500ms ease-in-out;

View File

@@ -15,7 +15,7 @@
left: 614px;
}
&.hidden {
will-change: opacity;
/* will-change: opacity; // WebOS TV 메모리 최적화를 위해 주석 처리 */
opacity: 0;
}

View File

@@ -26,7 +26,7 @@
width: 324px;
}
&.hidden {
will-change: opacity;
/* will-change: opacity; // WebOS TV 메모리 최적화를 위해 주석 처리 */
opacity: 0;
}
@@ -78,7 +78,7 @@
border-radius: 50%;
transform: @knob-transform-resting;
// opacity: 0;
will-change: transform, opacity;
// will-change: transform, opacity; // 메모리 소비 문제로 제거
-webkit-transition: -webkit-transform @activate-transition-function 0.2s,
opacity ease 0.2s;
transition: transform @activate-transition-function 0.2s,

View File

@@ -36,7 +36,9 @@
.thumbnail,
.content {
pointer-events: none;
will-change: transform;
/* will-change: transform; // WebOS TV 메모리 최적화를 위해 주석 처리 */
/* Chromium 68 호환성을 위한 GPU 가속 대안 */
transform: translateZ(0);
}
.thumbnail {