현재 모바일 앱을 만들고 있는데 캔버스 또는 img 태그를 사용하는 것이 성능면에서 더 좋은지 궁금합니다. 내 웹 사이트에 실제 이미지를 쿼리 할 것입니다. 하나의 이익이 다른 것보다 많은지 궁금합니다.img 대신 캔버스를 사용하면 어떤 이점이 있습니까?
답변
주요 이점은 불필요한 브라우저 디코딩을 피하는 것입니다.
이- 이미지 파일
- 디코드 메모리 비트 맵에 원래 JPEG, GIF, PNG 또는 WebP 형식이 형식에서 이미지의 인코딩 된 콘텐츠를 검색 :에paint an image onto screen에 브라우저의
, 그들은 필요
- 사용자가 스크롤 크기를 조정할 때
성능 문제가 발생할 화면에 그것을 페인트. 디코딩은 특히 비쌉니다. 그러나 페이지를 위아래로 스크롤하면 브라우저는 이전에 점유 한 메모리 인 off-screen images (즉, 현재 스크롤 영역 외부의 내용)을 검색하려고 시도합니다. 즉, 화면 가장자리에서 이미지가 다시 나타날 때마다 브라우저는 동일한 값 비싼 디코딩 프로세스를 반복해야합니다. 긴 페이지에 많은 이미지가 튀어 나오면 브라우저가 스크롤을 더듬 거리게됩니다.
캔버스의 다른 점 : 브라우저는 캔버스 내부에서 디코딩 된 정보를 재활용하지 않습니다. 캔버스를 사용하여 이미지를 렌더링하면 불필요한 디코딩을 피할 수 있습니다.
물론 휴대 기기를 타겟팅하는 경우 이미지 태그로 다시 전환하고 메모리가 부족하기 때문에 브라우저에서 작업을 수행 할 수 있습니다.
이것은 이미지 디코딩과 제한된 메모리 간의 충돌을 다루는 브라우저 관련 전술이라고 생각합니다. Timeline 개발 도구에서 프로세스가 표시되기 때문에 Chrome에 대해 더 구체적으로 말하고있었습니다.
아니요! 정적 콘텐츠를 표시하는 경우 <canvas>
은 느리고 훨씬 더 둔합니다. <canvas>
과 <img>
은 완전히 다른 작업을 수행합니다. 전자는 JavaScript를 사용하는 동적 그래픽 용이고 후자는 URI에서 검색 한 정적 이미지 용입니다.
HTML은 스트리밍하는 동안 브라우저가 IMG 소스를로드하는 데 최적화되는 경향이 있으므로 페이지가 완전히로드되기 전에 이미지가 표시됩니다. 반면 캔버스는로드되는 DOM에 종속적이므로 DOMContentLoaded 이벤트가 발생하기 전까지는 (일반적으로)로드되지 않습니다. 캔버스 컨텍스트와 메모리 요구 사항을 만드는 데 대기 시간을 추가하면 이미지가 실제로 정적 인 경우 거의 확실하지 않습니다.
이미지로 멋진 것을하고 싶다면 왜 이미지를 IMG 태그에로드 한 다음 변환을 수행하기 위해 일단로드 한 다음 캔버스로 변환하지 않습니까?
- 1. 링크 대신 버튼을 사용하면 어떤 이점이 있습니까?
- 2. open3 대신 systemu를 사용하면 어떤 이점이 있습니까?
- 3. MSBuild를 사용하면 어떤 이점이 있습니까?
- 4. sessionStorage를 사용하면 어떤 이점이 있습니까?
- 5. extend.js를 사용하면 어떤 이점이 있습니까?
- 6. WCF를 사용하면 어떤 이점이 있습니까?
- 7. Subversion을 사용하면 어떤 이점이 있습니까?
- 8. CGPath를 사용하면 어떤 이점이 있습니까?
- 9. LINQ를 사용하면 어떤 이점이 있습니까?
- 10. Python VirtualBox API를 사용하면 어떤 이점이 있습니까?
- 11. int16을 사용하면 어떤 이점이 있습니까? .net 변수 선언에 int16 대신?
- 12. Twitter Bootstrap V2 대신 jQuery UI를 사용하면 어떤 이점이 있습니까?
- 13. 이 경우 bigint 대신 int를 사용하면 어떤 이점이 있습니까?
- 14. JPA PersistenceExceptions 대신 Spring DataAccessExceptions를 사용하면 어떤 이점이 있습니까?
- 15. C# 대신 Sitecore에서 XSL을 사용하면 어떤 이점이 있습니까?
- 16. AJAX : XMLHttpRequest 대신 jQuery의 .ajax()를 사용하면 어떤 이점이 있습니까?
- 17. iPhone - UIView beginAnimations 대신 animateWithDuration을 사용하면 어떤 이점이 있습니까?
- 18. 표준 레이아웃 대신 작업 표시 줄을 사용하면 어떤 이점이 있습니까?
- 19. 일반 문자열 대신 ObjectId를 사용하면 어떤 이점이 있습니까?
- 20. 루프에서 WaitForSingleObject 대신 WaitForMultipleObjects를 사용하면 어떤 이점이 있습니까?
- 21. epoll_create() 대신 epoll_create1()을 사용하면 어떤 이점이 있습니까?
- 22. '* 2'대신 '<< 1'을 사용하면 어떤 이점이 있습니까?
- 23. NginX를 Node.js에 사용하면 어떤 이점이 있습니까?
- 24. 잡종상에서 승객을 사용하면 어떤 이점이 있습니까?
- 25. MVC에서 HtmlHelper를 사용하면 어떤 이점이 있습니까?
- 26. 여기에 varchar보다 varbinary를 사용하면 어떤 이점이 있습니까?
- 27. SQL과 관련하여 XML을 사용하면 어떤 이점이 있습니까?
- 28. Mongo에서 상속을 사용하면 어떤 이점이 있습니까?
- 29. PHP에 java bridge를 사용하면 어떤 이점이 있습니까?
- 30. Tomcat에서 APR을 사용하면 어떤 이점이 있습니까?
실제로 측정 했습니까? 어떤 참조? 나쁜 생각 같아. – Ryan
많은 프로젝트에서이 기능을 사용했으며 성능이 크게 향상되었습니다. 좀 더 연구를하고 나중에 세부 사항과 예제로 돌아가겠습니다. – Luxiyalu