由淘宝,京东,凡客站点的多条件分页查询细节想到的

简介:

首先,我详细描述下文章标题里面多条件分页查询的细节具体指什么?

多条件分页查询是我们常用的功能,今天留意到这样一个细节:

一般情况下,我们会将提供给用户选择的所有条件列在页面上,然后去判断用户选择了哪些条件,进而在后台动态组织sql去查询数据库。

而在绝大多数情况下,我们又会做服务端分页。

页面的布局大致分为三个部分(我自己的理解):条件区域,查询结果区域,页码区域。

第一种情况:用户选择选择几个条件,点击查询按钮,Ok显示用户想要的结果。

接下来,用户点击页面区域的某一页,OK显示对应了内容。

这里我想说的是,用户每点击一次页面区域,都会将条件区域用户选择的条件传给服务端进行分页查询。

接下来,用户将条件进行了更改,但是并没有点击查询按钮,而是去页码区域点击其中的某一页。这个时候提交给服务端查询的sql里面条件是被更改过的。

查询的结果也随之变化,但是这种变化并不是用户期望的。

这就是我想要说的细节,接下来我会用图解的方式展现在京东,凡客,淘宝三个站点进行上面操作的结果。

我这么理解:站在用户的角度,,就算我对条件做了更改,只要我没有去点击查询按钮,那么就表示查询条件不会生效。

实际情况是:当用户选择页码区域的某一页时,显示的结果是以更改后的条件查询出来的到这里,我想大家应该知道我在讲什么了吧!

接下来我们看看京东,凡客,淘宝他们是怎么做的?

首先是京东:

我打开京东--笔记本页面,进入高级搜索,也就是多条件查询。选择“惠普”

 

之后点击提交---结果如下图,没有任何问题

下面我增加一个品牌:“华硕”

我这个时候点击提交按钮,直接去页面区域选择一页,如下图:

直接点击第三页,显示的结果如下:

在我没有点击提交按钮的情况下,虽然更改了条件,翻页时我扔希望(我想也是很多用户的期望)显示前一个条件的查询结果。

凡客的主站上面几乎就没有什么高级搜索,所以就不用截图。用过京东跟凡客的朋友应该有这样一个体验,每次选择一个条件,就会刷新

我自己觉得,这是不太好的方式,为什么不等用户选择完所有的条件后通过提交按钮来执行查询呢?再来看看淘宝是如何处理的?

去淘宝搜索羽绒服,我选择如下图所示的两个条件。

 

然后确定,同样的,我更改搜索条件,但是不点击确定按钮。直接去页码区域选择任何页码单击。

直接单击第4页,页面会提交,这个时候淘宝巧妙的地方就出来了,发现原来条件区域里被更改过的条件(没点确定按钮)被恢复到了上一次(如下图)

呵呵,还是淘宝周到啊!

今天我们在园子的新闻可以看到双十一,淘宝创造的一个个记录,我们在感叹淘宝拥有的牛b的技术或架构的同时,是不是也对淘宝在细节上的把握表示一下钦佩呢?

可能我们一想到淘宝就会觉得,它的架构好,技术好,所以理所当然可以支撑海量的pv。对于电子商务网站来说,特别是访问量大的网站,拥有一个好的架构肯定是必然的,

但是我们是不是也应该在一些细节上面做好,尽可能减少对服务器的压力呢?打个比方:假如凡客每天的pv量是3kw,那么在多条件查询这块,

如果一个用户本来是选择两个条件,然后单击查询按钮,但是现在的情况是,本来只需一次查询,现在增加了一倍。也许有人觉得这个没什么,

但是如果是对于千万级别甚至是几亿,十几亿级别的pv数,对于服务器而言额外的压力就是非常巨大的,有一句话这么说:细节决定成败!

对于我们.NET开发人员来说,本来服务器的成本(Windows)就相对比较高昂,上次看到有资料显示MySpace的服务器有4500台,那得花多少$啊)

如果不能在细节上多注意,在架构上多下功夫,开发出来的网站也就只能......

以上是我今天从自己偶然发现的这么一个小的点所想到的,可能有很多不对的或是跟您想法相左的地方,请多多包含和指正。

我只是个菜鸟,甚至还没到"鸟"的级别,就一新手,还有很多东西需要向大家学习。

时间不早了,祝大家做个好梦!

本文转自Rt-张雪飞博客园博客,原文链接http://www.cnblogs.com/mszhangxuefei/archive/2011/11/13/interests_2.html如需转载请自行联系原作者


张雪飞

相关文章
|
移动开发 JavaScript 小程序
uView Popup 弹出层
uView Popup 弹出层
237 0
王道408计组汇编语言部分学习总结
用于实现分支结构、循环结构的指令: cmp、 test、 jmp、 jxxx 用于实现函数调用的指令: push、pop、call、 ret 用于实现数据转移的指令: mov
600 0
|
存储 关系型数据库 MySQL
升级宝典!阿里云RDS MySQL助力MySQL5.7升级到8.0
2023年10月,社区MySQL5.7停服。阿里云RDS MySQL对MySQL5.7的服务将进行到2024年10月21日,同时,并将通过有效的方案和大量的升级经验,鼓励和助力广大企业和开发者将MySQL5.7升级到MySQL8.0。
|
人工智能 缓存 文字识别
在淘宝,商品技术团队每天都在干什么?
在淘宝,商品技术团队每天都在干什么?
288 0
|
缓存 Java 数据库连接
探究Spring Boot中@PostConstruct注解的使用场景
【6月更文挑战第2天】在Spring Boot开发过程中,了解和合理利用@PostConstruct注解是非常重要的。这个简单却强大的注解能够帮助开发者在依赖注入完成之后执行初始化逻辑,从而确保组件在使用前已经完全准备就绪。
354 4
|
存储 负载均衡 并行计算
Dask性能调优指南:从单机到多节点的最佳配置
【8月更文第29天】Dask 是一个灵活的并行计算库,适用于数组、数据帧和列表等数据结构,能够在单个机器上高效运行,也可以扩展到分布式集群。由于其灵活性和可扩展性,Dask 成为了数据科学家和工程师们处理大规模数据集的理想选择。本文将详细介绍如何针对不同的硬件环境优化 Dask 的性能,包括单机和多节点集群环境。
1285 8
|
算法 Python
群智能算法:【WOA】鲸鱼优化算法详细解读
本文详细解读了鲸鱼优化算法(WOA),这是一种受鲸鱼捕食行为启发的新兴群体智能优化算法,具有强大的全局搜索能力和快速收敛速度。文章分为五个部分,分别介绍了引言、算法原理、主要步骤、特点及Python代码实现。通过模拟鲸鱼的捕食行为,该算法能够在复杂的优化问题中找到全局最优解。
|
人工智能 自然语言处理 机器人
销售利器大集结:13种智能销售工具全面解析
该文探讨了人工智能在销售领域的应用,测试了13款领先工具,如Zoho CRM、Email Subject Line Generator和ChatGPT Plus等,这些工具通过数据分析、自动化任务和智能交互提升销售效率。然而,使用AI也带来人机交互和数据安全的挑战。文章强调,结合人工智能和人类销售人员的优势是关键,同时应谨慎处理相关问题。
692 4
|
SQL 存储 Java
实时计算 Flink版产品使用合集之怎么配置日志的输出格式和文件大小
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
227 1
|
前端开发 JavaScript 数据安全/隐私保护
idea代码review工具Code Review Helper使用介绍
CodeReview IDEA 插件是一款用于代码审查的工具,旨在解决在GitLab中查看整体业务逻辑的不便。该插件提供快速添加注释、行号旁的评审意见标记、双击跳转到代码、意见删除和修改、内容导出为Excel以及导入等功能。特别地,它支持离线和在线模式,离线模式下,审核者和开发者通过Excel文件交换评审意见;在线模式则通过服务端实现评审内容的上传和下载,简化文件传输。此外,该插件允许定制评审字段,并能与团队协作工具集成。通过这些特性,CodeReview IDEA 提高了代码审查的效率和便捷性。
1476 2