网站性能优化
基本概念
1、網(wǎng)站吞吐量:TPS/每秒的事務(wù)數(shù),QPS/每秒的查詢數(shù),HPS/每秒的HTTP請(qǐng)求數(shù)
2、服務(wù)器性能指標(biāo):系統(tǒng)負(fù)載,內(nèi)存使用,CPU使用,磁盤使用以及網(wǎng)絡(luò)I/O等
前端優(yōu)化方法
1、減少HTTP請(qǐng)求:通過(guò)將多個(gè)前端資源合并成一個(gè)實(shí)現(xiàn)減少HTTP請(qǐng)求提高性能。
2、設(shè)置響應(yīng)頭字段是部分及時(shí)性要求不高的靜態(tài)資源在緩存在前端瀏覽器中。
3、啟用傳輸壓縮。例如gzip。
4、合理的布局前端代碼結(jié)構(gòu),css,html,js代碼的順尋由上至下。
5、對(duì)于一些可公開訪問(wèn)的資源,可以通過(guò)設(shè)置其他的域名的方式減少傳輸過(guò)程中的cookie。
6、使用CDN分發(fā),將靜態(tài)資源部署在各大網(wǎng)絡(luò)運(yùn)營(yíng)商的機(jī)房中,這樣子用戶就可以非常快的就近獲得資源。
7、使用反向代理將熱門內(nèi)容,靜態(tài)資源或者一些可被緩存的計(jì)算結(jié)果緩存在代理服務(wù)器中。通過(guò)配置代理服務(wù)器可以實(shí)現(xiàn)代理服務(wù)器直接轉(zhuǎn)發(fā)被緩存的資源。
后端優(yōu)化方法
1、使應(yīng)用服務(wù)器實(shí)現(xiàn)無(wú)狀態(tài),將會(huì)話信息存儲(chǔ)在緩存服務(wù)器集群中,這樣每臺(tái)應(yīng)用服務(wù)器之間就可以被相同的對(duì)待。就可以通過(guò)增加服務(wù)器數(shù)量的方法水平擴(kuò)展整個(gè)系統(tǒng)的吞吐量。
2、選擇合理的緩存策略,只緩存對(duì)于業(yè)務(wù)而言及時(shí)性要求不高,且訪問(wèn)量大的數(shù)據(jù),選取合適的緩存命中算法,減少增加服務(wù)器或者服務(wù)器宕機(jī)對(duì)于應(yīng)用的影響。
3、緩存防御策略,將可預(yù)見的但是并不存在的數(shù)據(jù)緩存下來(lái),防止惡意攻擊連續(xù)對(duì)緩存發(fā)起該資源的請(qǐng)求導(dǎo)致最終請(qǐng)求壓在數(shù)據(jù)庫(kù)上面。
4、使用消息隊(duì)列實(shí)現(xiàn)網(wǎng)站的異步處理。對(duì)于某些接口調(diào)用需要花費(fèi)很長(zhǎng)的時(shí)間,可以通過(guò)一個(gè)消息隊(duì)列來(lái)實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模式,每一個(gè)模塊既可以是消費(fèi)者也可以是生產(chǎn)者。但是消息隊(duì)列也有一定的確定,需要增加額外的機(jī)制來(lái)保證事務(wù)性,例如通過(guò)一張表來(lái)記錄消息的消費(fèi)記錄和消費(fèi)結(jié)果來(lái)實(shí)現(xiàn)事務(wù)最終的一致。
5、對(duì)各種資源費(fèi)復(fù)用來(lái)減少創(chuàng)建資源時(shí)的時(shí)間和性能開銷,例如使用數(shù)據(jù)庫(kù)連接池和線程池。
6、提高代碼邏輯和代碼中數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)的合理性以及優(yōu)化算法提高應(yīng)用程序的處理時(shí)間。
7、硬件上采用更加優(yōu)秀(快)的硬件。
總結(jié)
上面寫的哪些優(yōu)化方法對(duì)于一個(gè)中大型的網(wǎng)站而言,算是一個(gè)非常普遍的解決方案了,但是落實(shí)到不同的業(yè)務(wù),會(huì)有自己的實(shí)現(xiàn)方式,這里的實(shí)現(xiàn)方式指的是不同的方案組合和對(duì)應(yīng)的技術(shù)實(shí)現(xiàn)方式。舉個(gè)形象點(diǎn)的例子,有些網(wǎng)站不需要前端再加一個(gè)CDN,有些網(wǎng)站不需要加緩存服務(wù)器集群,有些業(yè)務(wù)使用JMQ實(shí)現(xiàn)消息隊(duì)列,有些使用redis緩存消息實(shí)現(xiàn)消息隊(duì)列,對(duì)于事務(wù)性的保證,也不一定通過(guò)數(shù)據(jù)庫(kù)鎖或者線程同步來(lái)實(shí)現(xiàn),也可以通過(guò)增加額外的存儲(chǔ)結(jié)構(gòu)來(lái)記錄鎖,鎖只是一種概念,我們可以選擇編程語(yǔ)言自帶的方式也可以用數(shù)據(jù)結(jié)構(gòu)去描述一把鎖。
轉(zhuǎn)載于:https://www.cnblogs.com/firstdream/p/7781775.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
- 上一篇: 华为发布2022上半年财报:营收3016
- 下一篇: 最近阅读20171106