首先說明下:網站架構的核心元素:性能、可用性、伸縮性、擴展性、安全性。
一、web前端優化
減少http請求,因爲每個請求都需要建立通信鏈路,進行傳輸,而服務器對於每個請求都會單獨創建一個線程去處理,線程多了會發生什麼,這個不用我說也知道了吧!
使用瀏覽器緩存,這個的話很簡單,對於一些資源啥的,做緩存,然後下次請求的話就不需要額外的開銷了。應該都能理解
啓用壓縮,這個字面意思已經說明了,就是對一些文件合併壓縮,額,這個對於服務器資源不足的時候才考慮,目前用的比較少。
CSS放在頁頭、javascript放在頁尾(如果是頁面加載需要用到的javascript,那麼放在頁頭)。
減少cookie傳輸。
二、CDN緩存
- 內容分發網絡,本質還是緩存,好處是:用戶訪問瀏覽器請求資源時,會直接從CDN返回給瀏覽器,最短的路徑返回響應,加快用戶訪問速度,減少數據中心負載壓力。
三、反向代理
- 可以算是一種安全措施吧,用戶訪問服務器資源時,所發起的請求會通過反向代理服務器去向服務器發起請求,而不是直接請求服務器獲取資源,當然,反向代理除了安全功能的話,也能通過配置緩存加速web請求(當然了,這個我還不知道怎麼配置,沒有實踐過,不過應該還是蠻簡單的,畢竟現在網上資源太多了)
四、應用服務器性能優化
分佈式緩存
(網站性能優化第一定律:優先考慮使用緩存優化,這樣可以知道一件事情,緩存是個好東西啊,哈哈哈!)說到緩存,那麼問題來了,到處都聽別人說,那麼什麼是緩存咧???
肥羊解答:緩存啊,緩存就是指數據存儲在相對較高訪問速度的存儲介質中,然後給系統去處理。簡單吧?它的本質就是一個內存的Hash表,是以一對key,value的形式去存放的。緩存爲什麼是個好東西呢,爲什麼要使用它咧?
肥羊解答:額,這個簡單點說吧,首先,緩存訪問速度快啊,可以減少數據訪問的時間;其次吧,你有些數據是要經過計算處理得到的,然後你把這些結果放到緩存中了,那你下次再去做相同的操作的時候,這些被緩存的數據就不需要重複計算就可以用了唄(減少計算的作用,前提:上下文一致的情況)。緩存雖好,但是不可亂用啊?
肥羊解答:緩存是很好,但是要用在合適的場景下,不然就GG了,緩存主要用來存儲讀寫比很高、蠻少變化的數據,所以不要亂用咯!下面會把我理解的詳細說明下。(這個我也是剛瞭解到的,以前一直在用,沒有去想爲什麼要這樣去用,網站數據訪問通常遵循二八定律,額 不是三八定律哦!80%的訪問落在20%的數據上,那麼這20%的數據緩存好了,就能很好的改善系統性能了,提高讀取速度,降低存儲訪問壓力哦。。。。。。)我們要合理的運用緩存,下面說下我看了一些資料後的理解啊首先打點心靈雞湯:緩存使用好了,訪問起來的感覺是棒棒的,但是不合理的使用不僅不會達到這個效果,還會成爲系統累贅,甚至一些bug,那麼問題來了,那些數據不適合放在緩存裏呢?
- 頻繁修改的數據:要是你的數據在短時間類是要頻繁修改的,那你放在緩存中是多餘的。
- 沒有熱點的訪問
- 數據不一致與髒讀
(貌似時間不早了,我是不是要洗洗睡覺了……………………..,那我先撤了,明天晚上繼續分享,這也是我記錄理解的一種好手段。現在在看《大型網站技術架構》這本書,寫的很好的)