웹 최적화 개념 - 필요한 유일한 가이드(진행 중)
목차
1. What is and how to use CDN
2. Why do we need Lazy Load
3. Reflow and Repaint
기타 콘텐츠
1. CDN이란 무엇이며 CDN을 적용하는 방법
1.1 What is CDN exactly?CDN (Content Delivery Network) refers to a computer network system connected to each other through the closest server. So that content such as music, pictures, videos, applications and other static resources can be send to users more reliable and efficiently. CDN provides high-performance, scalability and low-cost network content to users.
1.2 What's the benefits of CDN 5 10 6 4In terms of performance, the role of introducing CDN is to:
Users receive content from the nearest server, with lower latency , faster content loading speed.
Part of the resource request is allocated to the CDN, reducing the load on the server
In terms of network security, CDN helps defend against DDoS, MITM and other network attacks.
Intersection Observer API는 대상 요소와 상위 요소 또는 최상위 문서의 뷰포트와의 교차점에서 변경 사항을 비동기식으로 관찰하는 방법을 제공합니다.
Intersection Observer API를 사용하면 다음 상황 중 하나가 발생할 때 호출되는 콜백을 구성할 수 있습니다.
대상 요소는 장치의 뷰포트 또는 지정된 요소와 교차합니다. 지정된 요소를 Intersection Observer API의 목적을 위해 루트 요소 또는 루트라고 합니다.
관찰자에게 처음으로 대상 요소를 관찰하라는 요청을 받을 때입니다.
2. Lazy Load가 필요한 이유
Lazy loading is also called on-demand loading. It refers to the lazy loading of image data in long page website.
In a relatively long web page, if many pictures all loaded at the same time but the user can only see the part of the picture in the viewport, it wastes a lot of performance.
The above problems can be solved. Before scrolling the screen, pictures outside the visualization area will not be loaded, it will only be loaded when it shows up in the viewport. This makes the page load faster and reduces the load on the server.
How do we achieve lazy load
In HTML5, image
tag has an attribute call data-src
to temporarily store resource path as we would not want it to be load immediately. After that we will keep monitoring the relative postion between the image and viewport. Once it appears in the viewport, we will switch the data in data-src
to src
.
There are two ways to monitoring the relative postion between the image and viewport.
1. Calculate the height manually
window.innerHeight
The read-only innerHeight property of the Window interface returns the interior height of the window in pixels.document.body.scrollTop
The Element.scrollTop property gets or sets the number of pixels that an element's content is scrolled vertically.imgs.offsetTop
The HTMLElement.offsetTop read-only property returns the distance of the outer border of the current element relative to the inner border of the top of the offsetParent node.
if img.offsetTop < window.innerHeight + document.body.scrollTop
, it indicates that the image has entered viewport
<div class="container">
<img src="loading.gif" data-src="pic.png">
<img src="loading.gif" data-src="pic.png">
<img src="loading.gif" data-src="pic.png">
</div>
<script>
var imgs = document.querySelectorAll('img');
function lazyLoad(){
var scrollTop = document.body.scrollTop;
var winHeight= window.innerHeight;
for(var i=0;i < imgs.length;i++){
if(imgs[i].offsetTop < scrollTop + winHeight ){
imgs[i].src = imgs[i].getAttribute('data-src');
}
}
}
window.onscroll = lazyLoad();
</script>
2. Intersection Observer API
Read more about implementation about Intersection Observer API- 다시 칠하기
이름에서 알 수 있듯이 repaint는 요소의 가시성에 영향을 주지만 레이아웃에는 영향을 미치지 않는 요소의 스킨이 변경됨에 따라 화면에 요소를 다시 그리는 것입니다.
예시.
다시 그리기를 시작합니다.
Opera에 따르면 다시 그리기는 브라우저가 다른 모든 dom 노드의 가시성을 확인/확인하도록 하기 때문에 비용이 많이 드는 작업입니다.
- 리플로우
리플로우는 문서의 일부 또는 전체를 다시 렌더링할 목적으로 문서에 있는 요소의 위치와 형상을 다시 계산하는 것을 의미합니다. 리플로우는 브라우저에서 사용자 차단 작업이기 때문에 개발자가 리플로우 시간을 개선하는 방법을 이해하고 다양한 문서 속성(DOM 깊이, CSS 규칙 효율성, 다양한 유형의 스타일 변경)이 리플로우에 미치는 영향을 이해하는 데 유용합니다. 시각. 때때로 문서의 단일 요소를 리플로우하려면 상위 요소와 그 뒤에 오는 모든 요소를 리플로우해야 할 수 있습니다.
다시 그리기 및 리플로우는 비용이 많이 들 수 있고 사용자 경험을 손상시킬 수 있으며 UI를 느리게 보이게 할 수 있습니다.
리플로를 줄이고 다시 칠하는 방법은 무엇입니까?
documentFragment
을 만들고 여기에 모든 DOM 작업을 적용한 다음 마지막으로 문서로 업데이트할 수 있습니다. 왜 React를 사용하지 않습니까? 애니메이션을 최적화하는 방법?
위에서 언급한 것과 동일합니다. 변경 사항이 다른 요소에 영향을 미치지 않도록 문서 흐름에서 요소를 유지하려면 절대 또는 고정을 사용합니다.
Reference
이 문제에 관하여(웹 최적화 개념 - 필요한 유일한 가이드(진행 중)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/weifengnusceg/web-optimization-concepts-the-one-and-only-guide-you-need-in-progress-bch텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)