《Redis實戰》一2 5 網頁分析

2021-09-23 16:02:24 字數 1695 閱讀 4565

**可以從使用者的訪問、互動和購買行為中收集到有價值的資訊。例如,如果我們只想關注那些瀏覽量最高的頁面,那麼我們可以嘗試修改頁面的格局、配色甚至是頁面上展示的其他鏈結。每乙個修改嘗試都能改變使用者對乙個頁面或者後續頁面的體驗,或好或壞,甚至還能影響使用者的購買行為。

前面的2.1節和2.2節中介紹了如何記錄使用者瀏覽過的商品或者使用者新增到購物車中的商品,2.3節中則介紹了如何通過快取web頁面來減少頁面載入時間並提公升頁面的響應速度。不過遺憾的是,我們對fake web retailer採取的快取措施做得過了火:fake web retailer總共包含100 000件商品,而冒然地快取所有商品頁面將耗盡整個**的全部記憶體!經過一番調研之後,我們決定只對其中10 000件商品的頁面進行快取。

前面的2.1節中曾經介紹過,每個使用者都有乙個相應的記錄使用者瀏覽商品歷史的有序集合,儘管使用這些有序集合可以計算出使用者最經常瀏覽的商品,但進行這種計算卻需要耗費大量的時間。為了解決這個問題,我們決定在update_token()函式裡面新增一行**,如**清單2-9所示。

**清單2-9 修改後的update_token()函式

新新增的**記錄了所有商品的瀏覽次數,並根據瀏覽次數對商品進行了排序,被瀏覽得最多的商品將被放到有序集合的索引0位置上,並且具有整個有序集合最少的分值。隨著時間的流逝,商品的瀏覽次數會呈現兩極分化的狀態,一些商品的瀏覽次數會越來越多,而另一些商品的瀏覽次數則會越來越少。除了快取最常被瀏覽的商品之外,程式還需要發現那些變得越來越流行的新商品,並在合適的時候快取它們。

為了讓商品瀏覽次數排行榜能夠保持最新,我們需要定期修剪有序集合的長度並調整已有元素的分值,從而使得新流行的商品也可以在排行榜裡面佔據一席之地。之前的2.1節中已經介紹過從有序集合裡面移除元素的方法,而調整元素分值的動作則可以通過zinterstore命令來完成。zinterstore命令可以組合起乙個或多個有序集合,並將有序集合包含的每個分值都乘以乙個給定的數值(使用者可以為每個有序集合分別指定不同的相乘數值)。每隔5分鐘,**清單2-10展示的函式就會刪除所有排名在20 000名之後的商品,並將刪除之後剩餘的所有商品的瀏覽次數減半。

**清單2-10 守護程序函式rescale_viewed()

通過記錄商品的瀏覽次數,並定期對記錄瀏覽次數的有序集合進行修剪和分值調整,我們為fake web retailer建立起了乙個持續更新的最常瀏覽商品排行榜。接下來要做的就是修改之前介紹過的can_cache()函式,讓它使用新的方法來判斷頁面是否需要被快取,如**清單 2-11所示。

**清單2-11 can_cache()函式

通過使用前面介紹的幾個函式,fake web retailer現在可以統計商品被瀏覽的次數,並以此來快取使用者最經常瀏覽的10 000個商品頁面。如果我們想以最少的代價來儲存更多頁面,那麼可以考慮先對頁面進行壓縮,然後再快取到redis裡面;或者使用edge side includes技術移除頁面中的部分內容;又或者對模板進行提前優化(pre-optimize),移除所有非必要的空格字元。這些技術能夠減少記憶體消耗並增加redis能夠快取的頁面數量,為訪問量不斷增長的**帶來額外的效能提公升。

前端學習(七) 網頁分析

學完了html的相關簡單的,入門級別的標籤之後,接下來我們就針對比較主流的網頁 進行一下網頁的結構分析,也就是分析一下它的骨架 那這麼長的網頁我們應該從頭分析 綠色部分 這個是上部分的導航欄,可以稱為副的導航欄 當我們把滑鼠放在上面的時候,就變成了乙個小手圖示,說明文字使用a標籤寫的 紅色部分 這個...

2015 2016網頁設計趨勢分析

接觸網頁設計也有5個年頭了,我也只是剛出頭的菜鳥,我很努力,我愛走彎路,我不在乎圈子是個什麼,跟著自己的夢想走。接觸過遊戲網頁,酷炫動感的,flash的,html5的,svg的,扁平化的,win8風格的,擬物場景的,oh,no,不是單純接觸,應該是這些型別都做過,作品雜七雜八,但是也一路跟著自己的夢...

在網頁中巢狀另一網頁 IFRAME標籤 詳解

src uri 嵌入式櫃架的頁面檔案路徑 name cdata 嵌入式櫃架的名字 longdesc uri 描述 width length 寬度 height length 高度 align top middle bottom left right 對齊方式 frameborder 1 0 櫃架邊框...