緩存
頁(yè)面緩存
頁(yè)面緩存的有效期比較短柒莉,因?yàn)轫?yè)面具有即時(shí)性
- 取緩存
- 手動(dòng)渲染模版
- 結(jié)果輸出
URL緩存
與頁(yè)面緩存的區(qū)別就是不同的頁(yè)面有不同的id啦
對(duì)象緩存
根據(jù)緩存取一個(gè)對(duì)象沽翔,對(duì)象緩存期望永久有效
- 取緩存
- 若緩存中沒(méi)有仅偎,取數(shù)據(jù)庫(kù),并且加載進(jìn)緩存
- 如果是更新操作窗轩,一定要記得處理緩存
service之間一定是調(diào)別人的service座咆,不要調(diào)用別人的dao,因?yàn)樵趕ervice中可能會(huì)涉及緩存操作腹备,而dao是純數(shù)據(jù)庫(kù)
Cache Aside Pattern
失效:從cache中取數(shù)據(jù),如果沒(méi)取到镀岛,則從數(shù)據(jù)庫(kù)中取友驮,成功后放入緩存
命中:從cache中取到了數(shù)據(jù)卸留,取到后返回
更新:先把數(shù)據(jù)存到數(shù)據(jù)庫(kù)中椭豫,成功后再讓緩存失效
一定不能先讓緩存失效,再更新數(shù)據(jù)庫(kù)
頁(yè)面靜態(tài)化喳整,前后端分離
頁(yè)面為純HTML框都,使用js ajax請(qǐng)求數(shù)據(jù)來(lái)渲染頁(yè)面
常用技術(shù)AngularJs呵晨、Vue.js
靜態(tài)數(shù)據(jù)可以緩存到客戶端,從服務(wù)器只需下載動(dòng)態(tài)數(shù)據(jù)
GET POST的區(qū)別
get是冪等的谓罗,從服務(wù)端獲取數(shù)據(jù)時(shí)無(wú)論調(diào)用多少次結(jié)果都一樣檩咱,不會(huì)對(duì)服務(wù)端產(chǎn)生任何影響
post向服務(wù)端提交數(shù)據(jù)戒傻,會(huì)對(duì)服務(wù)端數(shù)據(jù)產(chǎn)生改變
304
客戶端向服務(wù)端詢問(wèn)靜態(tài)頁(yè)面有沒(méi)有發(fā)生變化,沒(méi)有變化服務(wù)端就返回304表示從而讓客戶端可以直接使用本地緩存
但盡管304客戶端和服務(wù)端還是會(huì)有一次交互芦倒,怎么客戶端直接從瀏覽器取數(shù)據(jù)不翩,不需要詢問(wèn)服務(wù)端呢? spring有相關(guān)的配置器钟,可以直接取瀏覽器緩存
超賣(mài)問(wèn)題的解決
- 秒殺service中傲霸,步驟為減庫(kù)存、下訂單穆役,如果兩個(gè)線程同時(shí)進(jìn)入秒殺方法梳凛,要減庫(kù)存,就會(huì)出現(xiàn)超賣(mài)問(wèn)題淹接。
數(shù)據(jù)庫(kù)update時(shí)增加stock_count > 0限制條件塑悼。因?yàn)閿?shù)據(jù)庫(kù)會(huì)自動(dòng)加鎖雇初,不會(huì)有兩個(gè)線程同時(shí)進(jìn)入。 - 一個(gè)用戶通過(guò)抓取接口同時(shí)發(fā)起兩個(gè)請(qǐng)求郭怪,秒殺到兩個(gè)商品刊橘。
在數(shù)據(jù)庫(kù)的秒殺訂單表上,為用戶Id和商品Id建立唯一索引攒庵,防止用戶插入重復(fù)記錄败晴。但現(xiàn)實(shí)中,會(huì)使用驗(yàn)證碼解決稳懒,不讓用戶發(fā)出兩個(gè)請(qǐng)求场梆。
靜態(tài)資源優(yōu)化
- JS/CSS壓縮纯路,減少流量
- 多個(gè)JS/CSS組合,減少連接數(shù)
CDN優(yōu)化
內(nèi)容分發(fā)網(wǎng)絡(luò)顶岸,約等于緩存,在整個(gè)互聯(lián)網(wǎng)上有很多節(jié)點(diǎn)蜕琴,把數(shù)據(jù)在每個(gè)節(jié)點(diǎn)上都做一次緩存凌简。根據(jù)用戶的位置雏搂,將用戶的請(qǐng)求定位到最近的CDN鏡像上寇损。
總結(jié)
解決并發(fā)大
瓶頸在于數(shù)據(jù)庫(kù),最有效的辦法是加緩存
用戶發(fā)起請(qǐng)求芙沥,瀏覽器上通過(guò)頁(yè)面靜態(tài)化直接把頁(yè)面緩存到瀏覽器端浊吏;請(qǐng)求到達(dá)網(wǎng)站之前,可以部署CDN節(jié)點(diǎn)讓請(qǐng)求首先訪問(wèn)CDN歌憨;網(wǎng)站方面nginx也可以加緩存务嫡;應(yīng)用程序里頁(yè)面緩存漆改,頁(yè)面緩存再細(xì)粒度一點(diǎn)就是對(duì)象緩存。最后才到數(shù)據(jù)庫(kù)去扣。削減到數(shù)據(jù)庫(kù)的數(shù)量暮顺。