电商项目商品详情页架构设计

当用户进入京东首页,点击搜索手机进入搜索页面,点击一款手机进入商品详情页面,主要展现商品的信息,主要分为三块信息:html

  1:基本信息:展现商品的基本信息,包括sku价格等基本信息.ajax

2:商品描述(商品详情页下面商品信息的tab页面的第一个默认选中页面)redis

3:商品的规格参数(商品详情页下面商品信息的tab页面中第一个商品描述以外的其余页面包括商品的规格参数,评论,售后保障下面箭头所示等信息.)数据库

 

 

 

商品详情页项目架构设计:跨域

  1:商品的基本信息是用户在商城首页输入手机后再搜索引擎中返回商品结构,搜索引擎索引中只保存商品列表中的一部分商品展现信息,当用户点击一个商品就进入了商品详情页.缓存

    点击进入后第一个展现的就是商品的基本信息包括sku(颜色,尺寸等)规格参数,这些基本信息能够在商品显示商品详情页面的时候就查询显示个用户看.服务器

  2:商品描述的内容每每比较多,若是在加载商品详情页面的时候就显示出来就影响加载速度,为了快速响应用户,商品的描述能够延迟加载,延迟一秒钟加载。用js控制页面加载完cookie

    一秒钟之后再去用ajax去调用本项目的controller,controller去调用远程的rest接口获取而后返回商品描述html显示在页面上面,数据结构

    设置延迟一秒钟能够用js的setTimeout方法,setTimeout设置延迟一秒钟,setTimeout只会执行一次.架构

    这里的查询还能够经过jsoup直接调用远程rest服务.这里推荐使用调用前面说的controller方式。

  3:商品的规格参数和评论等其余的tabs信息(按需加载)能够按需加载,当用户点击商品规格这些tabs标签页是在去加载,若是用户不点击就不用去查询,能够减小服务器压力。

    一样这里的查询和商品2中的同样,能够ajax查询本地controller在去调用rest服务,也能够在页面上面直接使用jsoup跨域去调用远程的rest服务.

 

缓存: 查询商品的基本信息和商品的描述和规格参数是三个服务,也就是说一个商品详情页面的信息展现分三个服务三个步骤查询,

    固然也能够根据实际状况分得更细,为了减小数据库查询压力,可使用redis对一个商品的上面三个信息进行缓存,

    好比能够的命名方式能够为 "product:productdetail:123123"的方式 123123是具体一个商品的id,前面的product:productdetail

    是模块名字.redis数据结构推荐使用key,value 的string方式,由于hash等数据结构对设置过时时间支持得不太方便,不能为hash里面的单独key设置一个过时时间

    这里能够设置redis缓存过时时间为一天,当一个用户访问之后一天之内若是没有其余人访问这个商品的详情页面,缓存就过时,

    若是有人访问这个商品的详情页面这里能够更新redis中的商品信息过时时间(这样作的好处是热门商品能够加长过时时间,减小数据库查询次数)

    同时为了数据的实时性,也要开放一个删除redis里面的商品的接口,让修改和删除了商品的时候调用。

    更详细的京东详情页项目架构设计参考:http://blog.csdn.net/hunci/article/details/50424760#0-qzone-1-18510-d020d2d2a4e8d1a374a433f596ad1440

    作电商网站能够多参考京东淘宝的功能是怎么实现的,好比是否使用ajax删除购入车,购物车是否使用cookie仍是数据库,

    京东的购物车若是没有登陆就是用的cookie若是用了就是用的数据库(应该是redis)。多参考他们的用户体验。

相关文章
相关标签/搜索