게으른 적재
Lazy loading![]() | 이 글의 어조나 문체는 위키백과에서 사용되는 백과사전적 어조를 반영하지 못할 수도 있다.(2021년 6월) (이 를 과 시기 |
게으름 로딩(비동기 로딩이라고도 함)은 일반적으로 컴퓨터 프로그래밍에 사용되며, 대개 필요한 시점까지 개체의 초기화를 지연시키기 위한 웹 설계 및 개발에서 사용되는 설계 패턴이다.적절하고 적절하게 사용할 경우 프로그램 운영의 효율성에 기여할 수 있다.이는 웹페이지의 경우처럼 네트워크 컨텐츠에 접속하고 초기화 시간을 최소한으로 유지해야 하는 사용 사례에 이상적이다.예를 들어, 필요할 때까지 웹 페이지에 이미지를 로드하는 것을 연기하면 웹 페이지의 초기 표시를 더 빠르게 할 수 있다.게으른 짐의 반대는 열심히 싣는 것이다.[1]
게으른 부하를 사용하는 프레임워크
게으른 부하를 사용하는 꽤 유명한 틀은 Angle이다.서버 통신을 증가시키기 때문에 게으른 부하가 정말로 도움이 되는지에 대한 논의가 있었다.기본적으로, 게으른 로드는 앵글 개발자들이 초기화할 때 또는 기능이 호출될 때 어떤 모듈을 로드할지 결정하는 데 도움을 준다.용량이 작은 소형 기기와 인터넷을 지원한다고 주장한다.
아래는 Farata Systems의[2] TypeScript를 사용하여 프로그래밍된 각도(Aggle)에서 게으른 부하가 사용되는 예다.
@응모듈({ 수입품: [ 브라우저모듈, 라우터모듈.forRoot([ {경로: '', 구성 요소: 홈구성 요소}, {경로: '제품', 구성 요소: ProductDetailComponent}, {경로: 'luxury', 로드차일드 차일드: () => 수입하다('./190.190').그때(m => m.럭셔리모듈), 자료: {프리로드미:진실의} } ] // , {preloadingStrategy:CustomPreloadingStrategy} ) ], 선언문: [ 앱구성 요소, 홈구성 요소, ProductDetailComponent], 제공자:[{제공하다: 위치전략, useClass: 해시위치전략}, CustomPreloadingStrategy], 장화 끈: [ 앱구성 요소 ] })
구현
게으른 부하 설계 패턴을 구현하는 데는 네 가지 일반적인 방법이 있다: 게으른 초기화, 가상 프록시, 유령, 가치 보유자.[3]각자 장단점이 있다.
게으름 초기화
느리게 초기화하는 경우, 느리게 로드될 객체는 원래 null로 설정되며, 이 C# 예에서처럼 객체에 대한 모든 요청은 null을 확인하여 먼저 반환하기 전에 "즉시" 생성된다.
사유의 인트로 마이위젯아이디; 사유의 위젯 마이위젯 = 무효의; 공중의 위젯 마이위젯 { 얻다 { 만일 (마이위젯 == 무효의) { 마이위젯 = 위젯.적재(마이위젯아이디); } 돌아오다 마이위젯; } }
아니면 null-coalescaking 연산자와 함께?'
사유의 인트로 마이위젯아이디; 사유의 위젯 마이위젯 = 무효의; 공중의 위젯 마이위젯 { 얻다 { 돌아오다 마이위젯 = 마이위젯 ?? 위젯.적재(마이위젯아이디); } }
null이 합법적인 반환 값인 경우, 초기화되지 않았다는 신호를 위해 자리 표시자 객체를 사용해야 할 수도 있지만, 이 방법은 구현하는 것이 가장 간단하다.다중 스레드 응용 프로그램에서 이 방법을 사용할 경우, 경기 조건을 피하기 위해 동기화를 사용해야 한다.
가상 프록시
가상 프록시는 실제 개체와 동일한 인터페이스를 가진 개체다.처음으로 그것의 방법들 중 하나를 그것이 실제 물체를 싣고 나서 위임한다고 한다.
유령
"유령"은 부분적인 상태로 적재되는 물체를 말한다.개체 식별자만 포함할 수 있지만, 개체 속성 중 하나를 처음 액세스할 때 자체 데이터를 로드한다.예를 들어 사용자가 온라인 양식을 통해 콘텐츠를 요청하려고 한다고 가정하십시오.우리가 알고 있는 것은 콘텐츠는 접속될 것이지만 어떤 액션이나 콘텐츠는 알려지지 않았다는 것이다.
PHP 예제:
$userData = 배열하다 ( "UID" = > 단색의(), "requestTime" => 마이크로타임(진실의), "dataType" => "", "request" => "" ); 만일 (설정하다($_POST['데이터']) && $userData) { // ... }
가치보유자
값 홀더는 게으른 부하 동작을 처리하는 일반적인 개체로, 개체의 데이터 필드 대신 다음과 같이 나타난다.
사유의 밸류홀더<위젯> valueHolder; 공중의 위젯 마이위젯 => valueHolder.GetValue();
웹 구현
최소한의 시간 내에 브라우저가 페이지를 서비스하고 표시할 수 있도록 하는 것은 오늘날의 현대 세계의 중요한 요구 사항이다.게으른 하중을 구현하는 가장 간단한 방법은 다음과 같다.
<img src="image.jpg" alt="..." loading="lazy"> <iframe src="video-player.html" title="..." loading="lazy"></iframe>
로딩 속성은 게으름과 열심이라는 두 가지 값을 지원한다.Eager는 우선 순위에 따라 이미지를 로드하는 반면 게으름은 이미지가 필요하거나 뷰포트에 있을 때만 이미지를 가져오게 된다.
참고 항목
참조
- ^ "What is Lazy Loading Lazy vs. Eager Loading Imperva". Learning Center. Retrieved 2022-02-02.
- ^ 파인, Y, 모이세프, A.(2018).TypeScript를 사용한 각도 개발, Second Edition.12월 ISBN 9781617295348.
- ^ Martin Fowler (2003). Patterns of Enterprise Application Architecture. Addison-Wesley. pp. 200–214. ISBN 0-321-12742-0.
외부 링크