京东网站url规划分析
By admin
- One minute read - 47 words对于一些大型产品网站,当不同产品项的过滤条件不一样的时候,多个过滤条件会完全不一样。如服装行业与电脑配置的许多参数都不一样。而他们又是如何实现自动通过程序来调用的呢,是一个很值得学习的知识的。
下面我们来通过京东其中一个服装url来看一下,他们是如何实现这一点的。
上图是对于一些大类频道的url规划信息。非常的清楚,就不再一一讲述了。下面我们主要讲右侧”条件筛选“这一块.
经过用js的unescape(url)反编码后,得出url为
可能分析通过在浏览器里输入以上两个网址看到,打开的是同一个页面的。只是url编码不一样而已。
解码后的参数对对如下:
cat=1315,1342,9733 (分类信息,见上图) brand=35553,tzmall 品牌(id:品牌名称) page=1 当前页码 ext=53345::1373^^64135::8646^^95400::8648^^10669::1656^^29520::1589^^110357::10991^^ delivery=2 物流配送(0:全部 1:京东配送 2:第三方配送) sort=sort_dredisprice_asc 排序(价格升序)
其中cat,brand,page,delivery,sort这类的参数是固定不变的,当然还有更多的参数这里没有体现出来,如price 价格参数。对于一些不固定的参数是在ext里体现的,通过上面的ext参数再次分解,得出以下键值对:
attr_id attr_value
53345::1373 风格 64135::8646 袖型 95400::8648 领型 10669::1656 尺码 29520::1589 颜色 110357::10991 图案
其中attr_id是用来从数据库中获取”属性名称”信息,而attr_value是从数据库字段中保存的”属性值”的值信息.根据此值从数据库中过滤符合条件的记录信息 我们可以试着手动修改attr_id的值,将数字53345修改为53344,可以看到默认的风格由”学院风格“显示成了“学院风格”。如下图所示
可以看到,所有不同种类产品的过滤字段信息通过一个ext参数来实现了。大家可以看一下京东网站其它频道的列表信息。
这里抛出一些新的问题:1.每行的属性前面的标题,如”品牌”,“风格”,”材质”这类的字样又是如何来动态控制的呢?
2.一些参数的是否受其它参数的影响,如用户选择”尺码:均码细节:毛边设计“时,会发现许多过滤项都消失了,这些是如何实现的?
用的方法很简单吧,不过复杂的问题是在数据库是他们是如何存储的呢?不同种类的产品不可能保存到同一个表中,起码关系型数据库是不行的。也许有同学会说mongodb可以实现,不错,是可以实现,但可以肯定他们不是用这个产品的,毕竟产品数据太多了,全部或者部分热数据放在内存里还是吃不销,不然吃内存太厉害了。
从以前京东的架构来看,他们用的是sql server,经过前两年的那个618促销活动带来的影响,后来引入了oracle数据库。新产品构架也由原来的开发语言由c#改为了java了。至于后端数据库架构是如何搞的,还是一个非常有意义的东西的。
个人分析他们是根据cat这个参数来定位不同种类产品的数据库的。