首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果要在页面上进行大量ajax过滤,那么是否可以更好地输入整个数据集?

如果要在页面上进行大量ajax过滤,那么是否可以更好地输入整个数据集?
EN

Stack Overflow用户
提问于 2010-09-14 23:33:27
回答 2查看 43关注 0票数 0

我基本上有这个网页,你可以缩小你的搜索结果,添加和删除某些过滤器在左手边。

从数据库中提取的内容是一个属性列表,可以通过以下方法对其进行筛选:

  • 类型(公寓、营地、牧场、渔营、旅馆、旅馆)
  • 活动(野营、划独木舟、狩猎)
  • 地点(爱达荷州,伊利诺斯州,印第安纳州)

因此,每次我单击左侧的一个有效过滤器时,它都会将其添加到ajax请求中使用的筛选条件中。这将加入所需的最小表数,并返回结果。

因此,如果我四处游玩并激活/取消激活,我可以轻松地在一分钟内完成大约20-30个ajax请求(除非取消激活,否则只允许一次过滤每种类型中的一个)。

问题:--我想知道我是否应该提取所有可能的属性并对它们进行过滤,而不是根据每个ajax请求查询数据库,每个事务至少有2-3个LEFT JOIN

有不到100的财产,我不处理数百或数千。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-15 16:14:59

绝对:拉出完整的数据集并对其进行过滤。假设您的每个Ajax请求花费100‘s。您可能已经在讨论在您的应用程序中引入2-3秒的延迟时间,而对于您的小数据集,您并不真正需要它。

如果您正在缩小结果列表,"面向对象的CSS“也可以成为您的朋友。考虑将各种可过滤的属性表示为类,并将用户选择的筛选器添加到其父类中,然后使用CSS显示或隐藏相关结果。

例如,如果您在父LI下将所有结果作为UL,则<ul class="idaho apartment">可以指示在所有爱达荷公寓项目上过滤的用户,而下面的CSS将隐藏其他内容:

代码语言:javascript
复制
.apartment .camp, .apartment ranch ... { display : none; }
.idaho .illinois, .idaho indiana{ display: none; }

使用这种方法,您只需要一台服务器,并依赖browser + JavaScript来处理其余的(由于您使用的是布尔比较-结果要么有属性,要么没有-它可能对您很好)。无论如何,即使在筛选时手动选择节点,也会比按筛选器发送请求更快。另外,现在您可以缓存单个数据库查询,如果需要运行复杂的查询,可能会为您节省大量开销。

全场发球!

票数 1
EN

Stack Overflow用户

发布于 2010-09-14 23:46:59

您可以重写ajax请求,这样它就可以返回它们的it而不是返回属性列表吗?这会减少LEFT JOIN的数量吗?

然后,您可以循环这些ids,调用另一个ajax请求来获取以前筛选中尚未缓存的属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3713680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档