首先,我详细描述下文章标题里面多条件分页查询的细节具体指什么?
多条件分页查询是我们常用的功能,今天留意到这样一个细节:
一般情况下,我们会将提供给用户选择的所有条件列在页面上,然后去判断用户选择了哪些条件,进而在后台动态组织sql去查询数据库。
而在绝大多数情况下,我们又会做服务端分页。
页面的布局大致分为三个部分(我自己的理解):条件区域,查询结果区域,页码区域。
第一种情况:用户选择选择几个条件,点击查询按钮,Ok显示用户想要的结果。
接下来,用户点击页面区域的某一页,OK显示对应了内容。
这里我想说的是,用户每点击一次页面区域,都会将条件区域用户选择的条件传给服务端进行分页查询。
接下来,用户将条件进行了更改,但是并没有点击查询按钮,而是去页码区域点击其中的某一页。这个时候提交给服务端查询的sql里面条件是被更改过的。
查询的结果也随之变化,但是这种变化并不是用户期望的。
这就是我想要说的细节,接下来我会用图解的方式展现在京东,凡客,淘宝三个站点进行上面操作的结果。
我这么理解:站在用户的角度,,就算我对条件做了更改,只要我没有去点击查询按钮,那么就表示查询条件不会生效。
实际情况是:当用户选择页码区域的某一页时,显示的结果是以更改后的条件查询出来的。到这里,我想大家应该知道我在讲什么了吧!
接下来我们看看京东,凡客,淘宝他们是怎么做的?
首先是京东:
我打开京东--笔记本页面,进入高级搜索,也就是多条件查询。选择“惠普”
之后点击提交---结果如下图,没有任何问题
下面我增加一个品牌:“华硕”
我这个时候点击提交按钮,直接去页面区域选择一页,如下图:
直接点击第三页,显示的结果如下:
在我没有点击提交按钮的情况下,虽然更改了条件,翻页时我扔希望(我想也是很多用户的期望)显示前一个条件的查询结果。
凡客的主站上面几乎就没有什么高级搜索,所以就不用截图。用过京东跟凡客的朋友应该有这样一个体验,每次选择一个条件,就会刷新
我自己觉得,这是不太好的方式,为什么不等用户选择完所有的条件后通过提交按钮来执行查询呢?再来看看淘宝是如何处理的?
去淘宝搜索羽绒服,我选择如下图所示的两个条件。
然后确定,同样的,我更改搜索条件,但是不点击确定按钮。直接去页码区域选择任何页码单击。
直接单击第4页,页面会提交,这个时候淘宝巧妙的地方就出来了,发现原来条件区域里被更改过的条件(没点确定按钮)被恢复到了上一次(如下图)
呵呵,还是淘宝周到啊!
今天我们在园子的新闻可以看到双十一,淘宝创造的一个个记录,我们在感叹淘宝拥有的牛b的技术或架构的同时,是不是也对淘宝在细节上的把握表示一下钦佩呢?
可能我们一想到淘宝就会觉得,它的架构好,技术好,所以理所当然可以支撑海量的pv。对于电子商务网站来说,特别是访问量大的网站,拥有一个好的架构肯定是必然的,
但是我们是不是也应该在一些细节上面做好,尽可能减少对服务器的压力呢?打个比方:假如凡客每天的pv量是3kw,那么在多条件查询这块,
如果一个用户本来是选择两个条件,然后单击查询按钮,但是现在的情况是,本来只需一次查询,现在增加了一倍。也许有人觉得这个没什么,
但是如果是对于千万级别甚至是几亿,十几亿级别的pv数,对于服务器而言额外的压力就是非常巨大的,有一句话这么说:细节决定成败!
对于我们.NET开发人员来说,本来服务器的成本(Windows)就相对比较高昂,上次看到有资料显示MySpace的服务器有4500台,那得花多少$啊)
如果不能在细节上多注意,在架构上多下功夫,开发出来的网站也就只能......
以上是我今天从自己偶然发现的这么一个小的点所想到的,可能有很多不对的或是跟您想法相左的地方,请多多包含和指正。
我只是个菜鸟,甚至还没到"鸟"的级别,就一新手,还有很多东西需要向大家学习。
时间不早了,祝大家做个好梦!