訂單模組優化

2021-10-20 11:17:01 字數 1049 閱讀 1285

頁面快取的主要思路為,將一些使用者經常請求的頁面,例如/goods/to_list–商品列表頁面,儲存到redis快取中,在使用者請求的時候直接在快取中獲取並返回,如果取快取失敗,則利用thymeleaf的手動渲染,渲染後存入快取,並且返回。我們可以很明顯的知道,不使用頁面快取的請求,每次都先訪問資料庫,然後經thymeleaf渲染,然後返回,其中渲染的過程可能需要從磁碟中讀取html模板,而使用頁面快取以後,直接在記憶體快取中讀取,無需查庫和渲染,只有失效的情況下才需要查庫渲染,所以在些使用者經常請求的頁面中使用頁面快取優化,可大大降低對資料庫和伺服器的壓力。(需要注意的是合理的設定頁面快取的有效期)。

相對於頁面快取,物件快取是個更細粒度的快取,比如說在登入模組中的session中,我們把session對應的user物件儲存到redis快取中,那麼在需要user物件的頁面中,既不需要登入,也不需要更具cookie去查詢資料庫,只需要通過cookie在redis中獲取user物件,即可使用,同理,這樣型別的快取也會減小對資料庫的壓力。

上述的兩種快取,都是利用redis快取伺服器來實現的,雖然可以降低對資料庫和伺服器的壓力,但是,redis伺服器的容量和處理能力也是有限的,所以我們可以考慮將頁面模板直接快取到使用者的瀏覽器,那麼每次請求使用者只需要請求用於渲染的物件即可,這不僅僅減輕了redis伺服器的壓力,同時也減少了頻寬的消耗,此即為頁面靜態化。 在本專案中,主要實現的是商品詳情、訂單詳情頁面、秒殺頁面的靜態化,主要方法是利用ajax的非同步載入,請求渲染需要的物件,並且通過配置 ####### spring.resources的相關引數來告訴瀏覽器是否快取,快取有效時間等等

由於伺服器處理下單涉及db的讀寫,當併發量很大的時候,需要很多時間,從而使用者體驗會很不好,因為需要等待很久才知道結果。所以採用訊息佇列非同步下單。即如果使用者秒殺成功,那麼建立的訂單並不直接寫入db。而是給rabbitmq傳送一條message.然後就直接返回給使用者說下單成功。然後由監聽訊息佇列的消費者根據接收到的訊息,建立訂單並寫入db.這裡為了提高效率,可以使用乙個執行緒池來解決併發及連線復用的的問題。

商城之訂單模組

功能 感覺這個還是比較重要的。以後去公司也很可能會要我們調支付介面,所以這裡還是提前了解一下比較好。支付這塊分為兩種,一種是直接和銀行互動,直接通過銀行去互動支付的東西,這種一般是不會用到的。另一種是 支付平台。像這種前牽扯到錢的東西,一般都會用到加密的東西,雖然在大學裡就在學加密的這些東西,但並 ...

springcloud 消費者訂單模組

1.建立訂單模組 2.引入依賴到pom.xml dependencies dependency groupid org.springframework.boot groupid artifactid spring boot starter web artifactid dependency depe...

電商專案之訂單模組理解(重點)

1 建立訂單 請求引數 httpsession session,integer shippingid 難點 a 獲取session中當前登陸使用者 b 通過使用者id查詢購物車,從購物車獲取資料 c 計算出訂單的總價 獲得總價 d 生成訂單 e 將訂單批量插入到資料庫 f 減少我們的產品庫存 g 清...