게으른 적재

Lazy loading

게으름 로딩(비동기 로딩이라고도 함)은 일반적으로 컴퓨터 프로그래밍에 사용되며, 대개 필요한 시점까지 개체의 초기화를 지연시키기 위한 웹 설계 및 개발에서 사용되는 설계 패턴이다.적절하고 적절하게 사용할 경우 프로그램 운영의 효율성에 기여할 수 있다.이는 웹페이지의 경우처럼 네트워크 컨텐츠에 접속하고 초기화 시간을 최소한으로 유지해야 하는 사용 사례에 이상적이다.예를 들어, 필요할 때까지 웹 페이지에 이미지를 로드하는 것을 연기하면 웹 페이지의 초기 표시를 더 빠르게 할 수 있다.게으른 짐의 반대는 열심히 싣는 것이다.[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는 우선 순위에 따라 이미지를 로드하는 반면 게으름은 이미지가 필요하거나 뷰포트에 있을 때만 이미지를 가져오게 된다.

참고 항목

참조

  1. ^ "What is Lazy Loading Lazy vs. Eager Loading Imperva". Learning Center. Retrieved 2022-02-02.
  2. ^ 파인, Y, 모이세프, A.(2018).TypeScript를 사용한 각도 개발, Second Edition.12월 ISBN 9781617295348.
  3. ^ Martin Fowler (2003). Patterns of Enterprise Application Architecture. Addison-Wesley. pp. 200–214. ISBN 0-321-12742-0.

외부 링크