Ленивая загрузка - Lazy loading

Ленивая загрузка (также известен как асинхронная загрузка) это шаблон дизайна обычно используется в компьютерном программировании и в основном в веб-дизайне и разработке, чтобы отложить инициализацию объекта до момента, когда это необходимо. Это может способствовать повышению эффективности работы программы при правильном и правильном использовании. Это делает его идеальным в тех случаях, когда осуществляется доступ к сетевому контенту и время инициализации должно быть минимальным, например, в случае веб-страница. Противоположностью отложенной загрузки является жадная загрузка. Ленивая загрузка в основном используется в изображениях в Интернете, чтобы они появлялись только тогда, когда они необходимы, чтобы веб-страницы загружались быстрее.

Реализации

Существует четыре распространенных способа реализации шаблона проектирования отложенной загрузки: ленивая инициализация; а виртуальный прокси; а призрак, а держатель стоимости.[1] У каждого есть свои преимущества и недостатки.

Ленивая инициализация

При ленивой инициализации объект для ленивой загрузки изначально имеет значение null, и каждый запрос объекта проверяет значение null и создает его «на лету», прежде чем вернуть его первым, как в этом примере C #:

частный int myWidgetID;частный Виджет myWidget = значение NULL;общественный Виджет MyWidget{    получить    {        если (myWidget == значение NULL)        {            myWidget = Виджет.Загрузить(myWidgetID);        }        вернуть myWidget;    }}

Или с оператор объединения с нулем '??'

частный int myWidgetID;частный Виджет myWidget = значение NULL;общественный Виджет MyWidget{    получить { вернуть myWidget = myWidget ?? Виджет.Загрузить(myWidgetID); }}

Этот метод является наиболее простым в реализации, хотя, если значение null является допустимым возвращаемым значением, может потребоваться использовать объект-заполнитель, чтобы сигнализировать, что он не был инициализирован. Если этот метод используется в многопоточное приложение, необходимо использовать синхронизацию, чтобы избежать условия гонки.

Виртуальный прокси

Виртуальный прокси - это объект с тем же интерфейсом, что и реальный объект. При первом вызове одного из его методов он загружает реальный объект, а затем делегирует его.

Призрак

«Призрак» - это объект, который должен быть загружен в частичном состоянии. Он может содержать только идентификатор объекта, но он загружает собственные данные при первом обращении к одному из его свойств. Например, предположим, что пользователь собирается запросить контент через онлайн-форму. На момент создания все, что мы знаем, это то, что доступ к контенту будет, но какое действие или контент неизвестно.

Пример PHP:

$ userData = массив (    "UID" = > uniqid(),    "requestTime" => микровремя(правда),    "тип данных" => "",    "запрос" => "");если (исет($ _POST['данные']) && $ userData) {    // ...}

Держатель стоимости

А держатель стоимости - это универсальный объект, который обрабатывает отложенную загрузку и появляется вместо полей данных объекта:

частный ValueHolder<Виджет> valueHolder;общественный Виджет MyWidget => valueHolder.GetValue();

Веб-реализация

Предоставление браузеру возможности обслуживать и отображать страницы за минимальное время является критически важной потребностью современного современного мира. Самый простой способ реализовать отложенную загрузку:

<img src="image.jpg" alt="..." loading="lazy"> <iframe src="video-player.html" title="..." loading="lazy"></iframe>

В загрузка атрибут поддерживает два значения, ленивый и нетерпеливый. Eager загрузит изображение с приоритетом, в то время как lazy будет загружать его только тогда, когда это необходимо или изображение находится в области просмотра.

Смотрите также

использованная литература

  1. ^ Мартин Фаулер (2003). Паттерны архитектуры корпоративных приложений. Эддисон-Уэсли. С. 200–214. ISBN  0-321-12742-0.

{{Ленивая загрузка Mozilla Web Dev }}