不少時候咱們在電商網站幾乎都有看到相似的功能,特別是一些購物網站均設計有瀏覽歷史或者看過該咚咚的人還瀏覽了相似其餘什麼咚咚的。 php
實現的語言(不限於php)和方法是多樣的。就我我的而言,比較喜歡將咚咚存儲在Server端不該存儲在Client端,至於爲何呢,立刻分析下吧。 數組
電商網店中ec是比較經典的一個例子了,那先來看看它的實現方式吧(存放在客戶端的) cookie
<?php /* 記錄瀏覽歷史 */ if (!empty($_COOKIE['ECS']['history'])) { $history = explode(',', $_COOKIE['ECS']['history']); array_unshift($history, $goods_id); $history = array_unique($history); while (count($history) > $_CFG['history_number']) { array_pop($history); } setcookie('ECS[history]', implode(',', $history), gmtime() + 3600 * 24 * 30); } else { setcookie('ECS[history]', $goods_id, gmtime() + 3600 * 24 * 30); } ?>
大概就是看客戶端cookie裏面存不存在歷史記錄,沒有就壓進入數組前面,控制歷史數量。 網站
這種方式有必定的弊端就是嚴重依賴客戶端,一旦客戶端禁用cookie,該功能無論你作的再牛逼,sorry,失效(包括好久之前的360buy啦),還有就是換作不一樣用戶登陸時,明明剛剛註冊的新用戶進入查看咚咚底層頁時也有瀏覽歷史,這顯然是不合理的。 spa
另外一方面,存放在服務端,數據真實,不只下降了客戶端的依賴性,還有利於數據挖掘分析權重比較,從而實現相似的其餘功能(足跡/推薦/熱銷...)
最後但願朋友們多多指正. 設計