问题标签 [lazy-loading]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
7877 浏览

c# - 在我的 C# 应用程序中延迟加载

我的 DAL 中有一个方法返回客户列表:

客户有这些列:ID、姓名、地址、简历

我需要在我的 ASPX 表单 (show-customers.aspx) 的分页网格中显示它们,我将只显示这些列:ID、名称

现在,在我的 DAL FindAllCustomers() 中,我是否也从 SP 返回 Bio 字段(我正在使用阅读器填写集合)?Bio 字段可以很大 (nvarchar(max))。我正在考虑延迟加载或仅加载必填字段。但是在那种情况下,我需要创建另一种方法,该方法返回一个“完整”的客户列表,包括 bio,以便 3rd 方应用程序可以通过服务层使用它。那么创建这样的方法是否可以:

如果 loadPartial = true,则不加载 Bio,否则加载它。在这种情况下,由于我不想从 SP 返回 Bio,我需要根据 bool 值在我的 SP 中创建 2 个选择语句。

我认为在这里使用延迟加载是行不通的,因为 DAL 方法可以被第 3 方应用程序访问,它可能也想加载 bio。

关于在这种情况下实施的最佳模式有什么建议吗?

谢谢,

维卡斯

0 投票
6 回答
5593 浏览

iphone - iPhone Dev - 延迟加载标签栏应用程序

How can I make it so when a tab is selected, the current one is unloaded, and the next one is loaded so only one loaded at a time? 或者我什至不应该这样做?我知道如何使用普通的 UIViewController 作为根 VC,但不确定使用 UITabBarController。另外,有没有办法动画从一个选项卡到下一个选项卡的过渡?有什么帮助吗?谢谢!!

编辑:...如果我卸载视图控制器,那么他们在标签栏上的图标就消失了......也许我会卸载他们的视图..

0 投票
2 回答
3209 浏览

ruby-on-rails - 如何在 rails 2.3.3 中有条件地分配 ActionController::Base.session

我有一个 Rails 应用程序,它在 config/initializers/session_store.rb 文件中包含以下内容:

因此,在正常操作期间,我们会看到在数据库中为每个会话创建的 ActiveRecord 对象。问题是我们并不总是希望为请求创建会话 - 我们希望能够关闭自动请求的会话创建。我们在数据库中看到了数千条会话记录,每个自动请求都有一条。在 rails 2.3.3 之前,以下是可能的:

但现在在 Rails 2.3.3 中,“session :off”已被弃用,因为会话现在是延迟加载的——如果你不使用它们,它们就不会被创建。问题似乎是会话对象总是在 sessionstore.rb 文件中分配,因此总是被创建。如果我从配置文件中删除会话分配块,那么在自动请求之后不会出现会话记录。我的问题是,如何将配置分配移到 session_store.rb 中的会话散列并移到 ApplicationController 类(或其他地方)中,只有在请求不是自动化的情况下才能有条件地分配会话?我担心在执行控制器处理程序之前可能需要会话配置数据。我会将会话键值的分配放在哪里?

提前感谢您的帮助。

0 投票
2 回答
750 浏览

.net - Linq2Sql - 你如何延迟加载嵌套列表?

如何在不实际执行查询的情况下延迟加载嵌套列表?使用一个非常基本的示例,假设我有:

然后在我的存储库层中,我有以下方法:

然后在服务层中,我将使用 GetCityBlocksByOwner,在这里我使用扩展方法来获取特定人拥有的城市街区,比如我们只想要 Guido 的街区:

如果我们在存储库中执行 .ToList() ,它将执行查询 - 这将是荒谬的,因为我们不知道我们在那个级别获得了谁的块。所以问题是,我们如何有效地做到这一点?

假设有 50000 个街区所有者,以及大约 1000000 个城市街区,加载所有这些街区不是一种选择。由于嵌套,使用 IQueryables 将不起作用(至少我知道没有极端的黑客攻击)。另外,如果我尝试使用 Rob Conery 的 LazyList 之类的东西,那么我们的 DAL 基本上会泄漏到我们的域模型中,这在未来可能会非常非常糟糕。

那么我该如何正确地做到这一点呢?

  • 这是确定正确上下文的问题吗?如果是这样,我们会在存储层或服务层中这样做吗?
  • 我是否将服务层和存储库层半融合在一起以获得非常具体的服务方法?
  • 还是我完全错过了什么?(对于 Linq2Sql 来说还是比较新的东西,反正它正在被逐步淘汰,所以......)

编辑: 在存储库模式中,我们当前正在映射到我们的域对象,所以它看起来像这样:

为此,我们必须让建筑物获得 .ToList(),除非我们将 CityBlock 对象中的实际字段设置为 IQueryable - 这似乎不对,因为看起来好像有太多的权力授予访问 CityBlock.BuildingsOnBlock 字段的任何人。这个映射到我们的领域对象是我们应该在服务层做的吗?

0 投票
3 回答
3117 浏览

nhibernate - 在 Fluent NHibernate 中检查是否存在延迟加载的子节点而不获取/加载

这应该很容易,但我似乎无法弄清楚......如何在没有实际获取或获取它的情况下检查实体上的孩子是否存在?孩子现在懒加载了..

所以我有两个实体:

我想在 A 的实例中检查 B 的存在而不实际获取大型博客...在直接 sql 中我可以检查 child_id 是否不为空...有什么方法可以查询 NHibernate 代理A中的B?

谢谢!

0 投票
1 回答
1387 浏览

.net - 在实体框架 v.1 中延迟加载昂贵的字段

在网上搜寻并认为我会想出解决方案之后,我似乎又碰到了另一堵砖墙。

我的数据库中有一张表:照片;包含 PhotoID、Caption、Ordering 列和四组二进制数据:Original、Large、Medium 和 Small(是的,它基于旧的 ASP.NET 入门工具包并进行了各种修复等)。

我正在从 L2S 迁移到实体框架,因为我似乎从中获得了一些优势 - 所以我不再需要通过 PhotosTags 属性来获取附加到照片的标签列表,但是我正在寻找一种延迟加载二进制数据的方法——大多数时候,我只需要标题、标签和 ID,然后当用户实际查看图像时,我将它们交给另一个区域以获取二进制数据.

我看过以下帖子:

  1. 如何拆分数据表?
  2. “表拆分”:将多个实体类型映射到同一个表。
  3. 第7章:实体框架学习指南(7.1延迟加载昂贵字段)

我最终得到了一个如下所示的实体映射:

实体图

而且,根据上面的链接,我修改了 edmx 文件以包含以下引用约束:

该模型已验证,但未构建 - 因为我认为标签映射存在问题:

错误 3019:从第 871、892 行开始映射片段时出现问题:复合键列的映射不正确。从表 siteContent_TagsPhotos (PhotoID) 到表 siteContent_Photos (PhotoID) 的外键约束“FK_siteContent_TagsPhotos_siteContent_Photos”:表 siteContent_TagsPhotos 中的列 (PhotoID) 映射到 siteContent_TagsPhotos 中的属性 (PhotoID),表 siteContent_Photos 中的列 (PhotoID) 映射到属性 (PhotoID)在照片照片详细信息中。不保留通过映射的列顺序。

从照片到标签的关系是通过一个链接表、列 PhotoID、TagID。

有没有人设法获得这些建议或类似的东西,以使用具有这样的数据结构的 .NET 3.5 SP1 中的实体框架?或者你能指出我的 GoogleFU 的局限性吗?

我知道在 .NET 4 中这一切都会变得容易得多,但这不在这里,而且它可能会在它发布后的一段时间内我的主机开始提供将它安装在某个地方。

谢谢。

0 投票
9 回答
17008 浏览

javascript - 停止使用 javascript (lazyload) 加载图像?

我试图停止在 dom 上使用 javascript 加载图像,然后在我想要的时候初始化加载,即所谓的图像延迟加载。像这样的东西:

这不起作用(在 ff3.5、safari 3-4 中测试)。无论如何,图像正在加载,我不明白。

例如,这个插件 www.appelsiini.net/projects/lazyload 正在做同样的事情,在页面加载时删除 src 属性。

我错过了什么?

编辑:我在这里添加了一个测试页面:http: //dev.bolmaster2.com/dev/lazyload-test/ 我首先完全删除了 src 属性,然后在 5 秒后将其与原始图像一起添加。仍然不起作用,至少萤火虫说图像在开始时就被加载了,萤火虫可以信任吗?

0 投票
2 回答
1109 浏览

asp.net-mvc - ASP.NET MVC 1.0 和 Castle ActiveRecord 2.0 延迟加载

如何从视图中访问 ActiveRecord 模型的延迟加载属性?

我有一个属于类别模型的新闻模型,两者都标记为 Lazy=true

通过在我的控制器中执行以下操作,我可以在我的视图中访问延迟加载的属性

然后在我看来,我解析结果并使用以下内容显示类别标题

显然,如果我不在控制器中引用该属性,则在尝试调用视图中的属性时会出现会话范围错误。

但这对我来说似乎是错误的。有没有更好的方法在到达视图之前初始化模型的延迟加载属性?我想我可以在模型中编写一个 Init 函数,但这似乎也很不稳定。

0 投票
1 回答
5112 浏览

nhibernate - NHibernate - 延迟加载集合 - 不起作用

我要么误解了 NHibernate 手册,要么做错了什么。任何人都可以帮忙吗?

我正在尝试检索没有 AuditLogEntrys 的用户。但 NHibernate 仍在加载 AuditLogEntrys。我只希望在访问该属性时加载 AuditLogEntrys。

映射:

获取用户的代码:

现在我期望一个带有空的 AuditLogEntry 集合的用户对象,但这不是正在发生的事情。

有任何想法吗??谢谢。

0 投票
4 回答
12481 浏览

java - Android - 将图像延迟加载到 ListView 的问题

这是一个非常常见的场景:在 ListView 中显示必须从 Internet 下载的图像。

现在我有一个用于 ListView 的 ArrayAdapter 的自定义子类。在 ArrayAdapter 的 getView() 实现中,我生成了一个单独的线程来加载图像。加载完成后,它会查找适当的 ImageView 并使用 ImageView.setImageDrawable() 设置图像。所以我使用的解决方案有点类似于这个:Lazy load of images in ListView

我遇到的问题是,只要我在 ImageView 上调用 setImageDrawable(),ListView 就会以某种方式刷新列表中所有当前可见的行!这会导致一种无限循环:

  1. 调用 getView()
  2. 产生线程以加载图像
  3. 图像已加载;在 ImageView 上调用 setImageDrawable()
  4. ListView 出于某种原因将其拾取并自行刷新
  5. 为了让 ListView 刷新,每个可见行都会调用 getView(),所以我们回到第 1 步,整个事情会不断重复

据我所知,“Android - 如何在 ListView 中延迟加载图像”(见上面的链接)中提出的解决方案根本不起作用。它可能看起来确实如此,但它会运行得很慢,因为在后台,它会不断重新加载当前可见的行。

有没有人遇到过这个问题和/或有解决方案?