我被要求将图像d / b查询的结果显示为coverflow-y类型的水平滚动缩略图库(256px长边,每个c.25kb)。如果需要库(可能),我将使用jQuery。除了图像,图库还可能显示一些标题(文本)数据。
问题是,用户的查询可能会无意中拉出数万个结果。延迟加载解决了一方面问题,但是我很难找到懒惰卸载,好像用户不断滚动图库项目只会增加数量,最终导致浏览器难以处理数据量。我想我需要让画廊加载10个项目,显示前5个,然后延迟加起来X项目,之后我添加的每个项目删除第一个库项目。如果用户向下滚动,则需要延迟重新加载已删除的项目。
我认为这是其他人必须面对的问题 - 即使在略有不同的显示环境中。欢迎指点如何超越上述。此外,在WAN(网络)环境中还有其他我忽略的性能问题(例如要加载的图库项目数量)?
澄清(回答#1)。
也许“不引人注目”的卸载可能是一个更好的术语。这个的核心是(在jQuery上下文中)我如何/在哪里放置create / destroy调用?
假设图库是一个滚动的<ul>
(可能水平,但我认为应该允许垂直),一次显示N <li>
个项目。查询记录集的偏移量(此处从零开始)可用于对id进行种子处理,例如<li id="x_12">
其中12是偏移值。这应该允许代码知道创建/删除哪个偏移和项目。它还可以检测到达开始时(偏移0),而基于AJAX的加载可以包含一个消息机制来指示没有下一个项目(即记录集的上端)。
这个原则,我明白了。但是对于更复杂的JavaScript和AJAX不那么熟悉,我需要对实际的代码细节进行推动。我的假设是,如果基本概念有效,我很可能会加入现有的基于JQuery的画廊(没有必要重新发明轮子)。
答案 0 :(得分:1)
您需要做的是在下一个/上一个动作上创建/销毁(这可能是鼠标移动,滚动条等)。
您必须检测您要去的方向,数量,然后使用该数字从行尾删除x个项目。您将不得不记住,当用户将不得不重新加载这些项目时。
希望浏览器能够缓存图像,从而加快加载速度,并降低对服务器性能的影响。
就保持速度而言,我的经验法则是“尽可能多地在视图区域的两侧滚动”,但这更适用于通用滑块。如果您要加载大件物品,我会额外保留一些额外费用以允许多次点击(我还会尝试每次加载更多物品)。
我会尝试阻止用户无意中抓取1000个物品,如果它在你的力量范围内。如果这是一个选项,您可能需要考虑演示文稿以外的其他内容。
答案 1 :(得分:0)