HTML5 Canvas 실시간 드로잉 성능 최적화 가이드
Source
Evernote/ancom21c's notebook/Fluent 2016 Tutoral 2 - Real-Time drawing with HTML5 Canvas.md
Summary
이 문서는 HTML5 Canvas를 사용한 실시간 드로잉 애플리케이션의 성능 최적화를 위한 실용적인 팁을 나열한다. 주요 내용으로는 상태 변경(색상 등) 최소화, requestAnimationFrame 사용, 변경된 영역만 다시 그리기, 캐싱 활용, 텍스트 렌더링 및 이미지 리사이징 피하기, 다중 캔버스 사용, 그리고 성능 측정(JSPerf)의 중요성을 강조한다. 또한 translate 함수의 성능 오버헤드와 fillRect 대비 rect + fill의 효율성, 검증된 라이브러리 또는 WebGL 활용을 권고한다.
Key Points
Canvas 상태 변경(색상, 변환 등)을 최소화하여 성능 저하 방지
애니메이션 루프에 setInterval 대신 requestAnimationFrame 사용
전체 화면이 아닌 변경된 부분만 다시 그리기(Dirty Rect)
정적 요소 캐싱 및 다중 캔버스 레이어 활용
텍스트 렌더링, 이미지 크기 변경, 소수점 좌표 사용 피하기
성능 측정 도구(JSPerf) 활용 및 검증된 라이브러리/WebGL 고려
Android ListView 커스터마이징 및 성능 최적화
Immutable Caching 을 통한 웹 성능 최적화
브라우저 동작의 이해 - 리플로우와 리페인트 및 그 최적화
웹 브라우저 동작 원리 (2) - 레이아웃 리플로우 최적화
Sitespeed.io를 사용한 웹사이트 성능 테스트
DevTools Continuous Painting Mode를 활용한 페인팅 성능 프로파일링
반응형 웹 디자인의 현황 (2013)
동영상 트랜스코딩 서버의 에너지 절약을 위한 스케줄링
2011년 3분기 웹 성능 최적화 핵심 링크 및 동향
인턴십 발표: LB 성능 측정
크롬 개발자 도구 101
Resource Timing API 를 통한 네트워크 성능 측정
웹 성능 크래시 코스 (Ilya Grigorik)
imgix 성능 개선 및 문제 원인 분석 (2017)
안드로이드 디자인 가이드 (Ted’s home)
넷플릭스 성능 케이스스터디 (NHN FE.JS Wiki #184)
임베디드 웹 서버: 제한된 리소스에서의 효율적 포맷팅
HTML5 게임 오프라인 지원 가이드
Scala + Play Framework 2 Server 성능 향상 시키기
Countly: 실시간 모바일 앱 분석 도구
커리어와 최적화
Velocity 2014: PageSpeed 인사이트 및 QuickBooks Online 클라이언트 사이드 아키텍처
High Performance Browser Networking (O’Reilly)
requestAnimationFrame 사용법
리눅스 서버 60초 상황파악 가이드 (Netflix USE Method 기반)
3: TCP 대신 UDP(QUIC)를 사용하여 네트워크 성능 및 신뢰성 향상
Google Chrome의 고성능 네트워킹 아키텍처
2020 년 웹 성능에 영향을 줄 6 가지 기술 (Simon Hearne)
LungoJS: HTML5 기반 모바일 프레임워크
HTML5 Web App Client-Side Storage 옵션 및 팁
Polaris: MIT 의 웹 페이지 로딩 속도 개선 기술
s 목표)
HTML5 기반 프리젠테이션 도구 소개
실시간 웹 협업도구 만들기 (홍영택)
HTML5 Developer Conference 후기 1
Hiding Native HTML5 Video Controls in Full-Screen Mode
HTML5 Video Player Comparison (2011)
JavaScript 성능 향상을 위한 Thread-level Speculation (TLS)
jQuery 애플리케이션 아키텍처 도구 (Addy Osmani)
Web Framework Benchmark Inspired
JavaScript 학습 자료 (2013)
오프라인 웹 애플리케이션 만들기 (Mozilla 웹 기술 블로그)
Yeoman: 도구를 활용한 더 나은 웹 개발
HTML5 <time> 요소 제거 논란
The “When Can I Use” Web Widget
Web Fundamentals 및 Web Starter Kit 리소스
The Web Ahead: Jen Simmons 인터뷰 요약
곽철용 짤 생성기 개발 후기 (Vue + HTML Canvas)
Three.js 시작 가이드 (Aerotwist)
Web Animations API: element.animate() (Chrome 36)
게임 개발팀 A의 정기 회의 매뉴얼
HTTP Archive: jQuery 호스팅 및 버전 분산 분석 (2013)
2012 년 HTML5 모바일 개발 현황 및 디바이스 API
Synchronized Cross-device Mobile Testing
Play Framework 2.2 기반 Facebook Canvas 게임 개발 일지
Explory: Flash 제작진의 멀티미디어 스토리텔링 앱
웹 기반 실시간 통신 보안 (WebRTC)
미래형 반응형 웹 디자인 (Warpspire)
Requirify: 브라우저 콘솔에서 동적 라이브러리 로딩
HTML에서 Javascript와 CSS 기반으로 애니메이션을 구현하는 방법
Locust 데모 및 아키텍처 논의 (SRPOL)
CSS 최신 동향 파악을 위한 Adobe Web Platform 블로그
야구9단 아키텍처 (NHN, 2011)
크롬 컨퍼런스 핵심 요약 (Web Components, DevTools, Chrome Apps)
HTML5 의 역사: W3C 와 WHATWG 의 분열과 XHTML 의 실패
모질라 CTO, W3C의 HTML5 DRM 허용안 비판
Chrome DevTools 모바일 스크린캐스트 및 에뮬레이션
시스코-구글, HTML5 코덱 표준화 무산
HTML5 모바일 앱의 해부학 (Anatomy of a HTML5 Mobile App)
Play Framework 개요
VueJS 프로젝트에 Prettier + ES6 Lint 적용
Cube Slam: WebRTC 기반 실시간 브라우저 게임
웹 컴포넌트(1): Keep calm and usetheplatform
Progressive React
HTTP 클라이언트 라이브러리의 리다이렉트 지원 방식 제안
Java 채팅 서버 구현 시 쓰레드 동기화 및 성능 이슈 토론 (2002)
실시간 투표 애플리케이션 구축 (Node.js, Express, AngularJS, MongoDB)
웹 기반 연산 오프로딩 및 상태 시리얼라이제이션 연구 동향
WebAssembly (WASM) 개요 및 설계 목표
Quora 기술 스택 및 아키텍처 분석
HTML5 의 핵심: W3C 명세와 실제 웹 플랫폼의 차이
Prototype용 선택 상자 플러그인
리눅스 환경 HLS 스트리밍 참조 링크 모음
CSS를 이용한 클라이언트 측 전체 텍스트 검색
Didact: 리액트 원리 학습을 위한 DIY 가이드 시리즈 소개
웹 증강을 위한 엔드유저 언어: 생산자와 소비자 모두를 위한 접근
8bit.js: Web Audio API 기반 8비트 사운드 라이브러리
GPU 동작 원리 및 아키텍처 개요
2012년 비즈니스 및 마케팅 트렌드 예측 자료 12선 (슬라이드쉐어)
아카마이, TCP 최적화 기술 ‘패스트TCP’ 공개
NDC 2012 강연 자료 링크 모음
5 jQuery Notification Plugins
카카오페이지 웹 React 포팅 후기
Scrapy 로 웹사이트 크롤링 해보기
React vs Vue 비교 (2019 Edition, React Hooks 기준)
Google, Web Components 를 웹 개발의 미래로 제시 (2013)
웹 개발자를 위한 가상 현실(VR) 가이드 (Smashing Magazine)
Native Navigation (Airbnb)
TLS Forward Secrecy Deployments
D3.js를 활용한 한국 지도 시각화 가이드
End-to-End Hypermedia: 미디어 타입 선택 가이드
실시간 분산 미들웨어 표준에 대한 조사
Web Speech API 소개 및 구현 가이드