5

我被要求将图像 d/b 查询的结果显示为coverflow-y 类型的水平滚动缩略图画廊(长边256px,每个c.25kb)。如果(可能)需要一个库,我将使用 jQuery。除了图像,图库可能还会显示一些标题(文本)数据。

问题是,用户的查询可能会在不知不觉中提取 000 条结果。延迟加载解决了一方面,但我几乎找不到延迟卸载,好像用户不断滚动图库项目只会增加数量,最终导致浏览器与数据量作斗争。我想我需要让画廊加载 10 个项目,显示前 5 个,然后延迟添加 X 个项目,然后对于我添加的每个项目,我删除第一个画廊项目。如果用户向下滚动,则需要延迟重新加载已删除的项目。

我认为这是其他人之前必须面临的问题——即使在显示环境略有不同的情况下。欢迎提供有关如何超越上述内容的指示。此外,在 WAN(网络)环境中,我是否忽略了其他性能问题(例如要保持加载的画廊项目的数量)?

澄清(响应答案#1)

也许“不显眼”的卸载可能是一个更好的术语。核心是(在 jQuery 上下文中)我如何/在哪里放置创建/销毁调用?

假设画廊是滚动的<ul>(可能是水平的,但我想应该允许垂直)<li>一次显示 N 个项目。查询记录集的偏移量(此处从零开始)可用于播种 id,例如<li id="x_12">,其中 12 是偏移量值。这应该允许代码知道要创建/删除哪个偏移量和项目。它还可以检测到达开始处(偏移量 0),而基于 AJAX 的加载可以结合消息机制来指示没有下一项(即记录集的上端)。

这个原理,我明白了。但是不太熟悉更复杂的 JavaScript 和 AJAX,我需要了解实际代码细节。我的假设是,如果基本概念有效,我很可能会添加到现有的基于 JQuery 的画廊中(没有必要在那里重新发明轮子)。

4

2 回答 2

1

您需要做的是在您的下一个/上一个操作中创建/销毁(这可能是鼠标移动、条形滚动等)。

您将必须检测您要去的方向,多少,然后使用该数字从行尾删除 x 数量的项目。您必须记住,当以相反的方式进行时,用户将不得不重新加载这些项目。

希望浏览器能够缓存图像,从而加快加载速度,并减少对服务器性能的影响。

在保持速度方面,我的经验法则是“尽可能多地在视图区域的任一侧滚动”,但这更适用于通用滑块。如果您要加载大型项目,我会保留一些额外的以允许多次点击(我也会尝试每次加载更多)。

如果它在你的能力范围内,我会尝试阻止用户无意中抓取 1000 件物品。如果这是一个选项,您可能需要考虑在您的演示文稿中使用封面流以外的其他内容。

于 2010-07-26T22:50:04.470 回答
0

您所描述的卸载实际上并没有懒惰。相反,您希望在 x 超过阈值时立即销毁 x 个对象。

这可以很容易地在 Array 或 ArrayCollection 上实现为 FIFO 队列。一些伪代码:

var array = new Array()

function NewObjectInArrayCreate(object)

    if array.length > 1000
        array.pop()
    else
        array.push(object)
于 2010-07-23T23:33:37.710 回答