什么是渴望加载?

时间:2009-08-19 11:37:03

标签: language-agnostic

什么是急切加载?我用PHP / JS编写代码,但更通用的答案就可以了。

我看到了很多关于Java& amp;的问题。 Ruby,但我不知道这些语言,我发现很难读取代码。我不知道最初应该做什么

4 个答案:

答案 0 :(得分:340)

有三个级别:

  1. 急切加载:当您被问到时,您会做所有事情。经典的例子是你乘以两个矩阵。你做所有的计算。那是急切的装载;
  2. 延迟加载:您只需在需要时进行计算。在前面的示例中,在访问结果矩阵的元素之前,不进行任何计算。和
  3. 过度加载:这是您尝试预测用户要求和预加载的内容。
  4. 我希望在你看到它的背景下有意义。

    让我给你一个“Webby”的例子。

    想象一下包含翻转图像的页面,例如菜单项或导航。图像加载有三种方式可以在此页面上运行:

    1. 在呈现页面之前加载所需的每个图像(渴望);
    2. 仅在页面加载时加载显示的图像,并在需要时加载其他图像(懒惰);和
    3. 仅在页面加载时加载显示的图像。页面加载后预加载背景中的其他图像以防您需要过度渴望)。
    4. 有意义吗?

答案 1 :(得分:21)

它与lazy loading相反,它推迟了对象的初始化,直到需要对象为止。 Eager loading在创建时初始化对象。

答案 2 :(得分:10)

如果你想象你的对象叫做有名字的人,出生日期和不太重要的细节数量,那就说最喜欢的颜色,最喜欢的电视节目。

懒惰加载这个类,你可能会从数据库中读取所有核心更频繁使用的详细信息(比如名字和出生日期),并且只在需要时读取较少使用的细节,急切加载相反,即你同时加载所有细节。

延迟加载的好处通常被称为效率,但是如果对象不那么复杂或效率不是一个问题,可能会使用急切加载

答案 3 :(得分:0)

急切加载也在Angular 8中使用。这仅意味着在应用程序自动加载到浏览器中后,我们会自动将其立即获取到特定模块中的所有代码,例如,说您刚刚创建了具有登录注册组件的身份验证模块,该组件被导入到应用程序模块中。 / p>

相反,存在惰性加载,这是当我们告诉加载了 Auth Module App Module 时,仅在特定时间点(例如,当用户转到特定路线时)加载身份验证模块