當使用者進入京東首頁,點選搜尋手機進入搜尋頁面,點選一款手機進入商品詳情頁面,主要展示商品的資訊,主要分為三塊資訊:
1:基本資訊:展示商品的基本資訊,包括sku價格等基本資訊.

2:商品描述(商品詳情頁下面商品資訊的tab頁面的第一個預設選中頁面)
3:商品的規格參數(商品詳情頁下面商品資訊的tab頁面中第一個商品描述之外的其他頁面包括商品的規格參數,評論,售後保障下面箭頭所示等資訊.)
商品詳情頁項目架構設計:
1:商品的基本資訊是使用者在商城首頁輸入手機後再搜尋引擎中傳回商品結構,搜尋引擎索引中隻儲存商品清單中的一部分商品展示資訊,當使用者點選一個商品就進入了商品詳情頁.
點選進入後第一個展示的就是商品的基本資訊包括sku(顔色,尺寸等)規格參數,這些基本資訊可以在商品顯示商品詳情頁面的時候就查詢顯示個使用者看.
2:商品描述的内容往往比較多,如果在加載商品詳情頁面的時候就顯示出來就影響加載速度,為了快速響應使用者,商品的描述可以延遲加載,延遲一秒鐘加載。用js控制頁面加載完
一秒鐘以後再去用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)。多參考他們的使用者體驗。