提高 Web開發效能的 10 個方法

2021-09-14 05:43:55 字數 2479 閱讀 1270

1. 採用反向**伺服器(reverse proxy server)來對應用進行加速和保護

其作用主要在以下三方面:

負載平衡 – 執行在反向**伺服器上的負載平衡器會在不同的不伺服器 間進行傳輸平衡。透過它,你可以進行無差別的伺服器增添。

存靜態檔案 – 對於直接的檔案請求,例如檔案或**檔案,可以直接儲存在反向**伺服器然後直接傳送給使用者,從而可以進行快速訪問並為應用伺服器進行減負使得程式效能得到提公升。

安全保護 – 反向**伺服器可以進行高安全度配置和對威脅進行識別和監測。

2. 增添乙個負載平衡器

為**增添乙個負載平衡器是乙個相對簡單的變更,但是它可以帶來不錯的效能和安全性提公升。負載平衡器的作用在於在不同伺服器間進行傳輸分發。

負載平衡器的實施前提是有乙個反向**伺服器,它在接收到internet通訊後把相關請求傳送到其它伺服器。平衡器的妙處在於它支援兩個或以上的應用伺服器,使用選擇演算法來分割伺服器間的請求。

3. 快取靜態和動態內容

快取技術的使用可使內容更快地展示給使用者,其處理策略有:在需求發出時更快地處理內容,把內容存放在更快的裝置上,或是使內容離使用者更近。

4. 資料壓縮

5. 優化ssl/tls訪問

儘管ssl/tls變得越來越流行,但是它對於效能的影響也應得到重視。其對效能的影響主要體現在兩個方面:

每當新的連線開啟,初始化握手都是無法避免的,即瀏覽器每次都需要使用http/1.x建立伺服器連線。

存放於伺服器上的加密資料會越來越大,加密後使用者讀取時也需要進行解碼。

那麼該如何進行處理呢?

會話快取—使用ssl_session_cache來直接快取建立新ssl/tls連線的引數

會話id化—把指定ssl/tls的標識/id存放起來,但要建立新連線時,就可以直接取用,從而免去重新建立通訊的繁瑣。

ocsp stapling優化—通過抓取ssl/tls認證資訊來減免建立通訊的時間。

6. 部署http/2或spdy

對於已經啟用ssl/tls的**,一旦結合http/2和spdy將能實現效能上的強強聯合;因為其結果是會讓單一連線的建立僅需一次通訊握手。spdy和http/2的主要特性是它們使用的是單一連線而不是多方連線。

7. 定期更新軟體版本

8. 優化linux效能

例如對linux進行以下配置或處理:

backlog佇列

檔案描述符

nginx允許每個連線最多使用兩個檔案描述符。如果你的系統服務的是多個連線,你可能需要考慮增大sys.fs.file_max的值。

瞬時埠

當作為乙個**使用時,nginx會為每個upstream伺服器建立臨時的瞬時(ephemeral)埠。因此可以嘗試加大net.ipv4.ip_local_port_range的值來增加可用埠數。

9. 優化web伺服器效能

訪問日誌優化

在nginx中,在access_log中加入buffer=size引數來實現日誌的快取寫入;加入flush=time則可實現在某個時間間隔後進行快取內容寫入。

快取

啟用快取可使連線響應更快。

客戶端活動連線

活動連線可減少重連的次數,特別是啟用ssl/tls的情況下。

upstream活動連線

upstream連線指的是連線到程式伺服器,資料庫伺服器等的連線。

限制資源的訪問

採取合適的策略來限制資源訪問可以提高效能和安全性。

進行worker處理

worker處理模式就是請求驅動處理模式。nginx使用了乙個基於事件的模型和os依賴機制來有效地對請求進行分發。

進行socket分表

socket分表可以為每個worker處理建立乙個socket***,當核心委派連線分到給***時,可以馬上知道哪個處理是即將執行的,從而使處理流程變得簡潔。

執行緒池處理

任何計算機執行緒都有可能由於單個緩慢的操作而掛起。對於web伺服器軟體來說,磁碟訪問是乙個效能瓶頸,例如進行資料複製等操作。當使用執行緒池來處理時,可以把一些響應慢的操作單獨地放入某個任務組裡面,從而不會對其它操作造成影響。

10.進行實時監控以快速解決問題和瓶頸

實施實時監控,可以全面掌握系統的運**況,發現問題解決問題,甚至是找出造成效能瓶頸或執行緩慢的原因。

例如可對如下的問題進行監控:

伺服器宕機

連線訪問丟失

伺服器快取丟失嚴重

伺服器傳送了錯誤的資料

提公升 Web開發效能的 10 個技巧

提公升 web開發效能的 10 個技巧.txt 1.採用反向 伺服器 reverse proxy server 來對應用進行加速和保護 其作用主要在以下三方面 1 負載平衡 執行在反向 伺服器上的負載平衡器會在不同的不伺服器 間進行傳輸平衡。透過它,你可以進行無差別的伺服器增添。2 存靜態檔案 對於...

web開發效能優化

1 查詢出的資料量過大 可以採用多次查詢,其他的方法降低資料量 盡量採取分頁查詢資料 2 鎖或者死鎖 這也是查詢慢最常見的問題,是程式設計的缺陷 3 返回了不必要的行和列 用or的字句可以分解成多個查詢,並且通過union鏈結多個查詢。它們的速度只與是否使用索引有關,如果查詢需要用到聯合索引,用un...

web開發效能優化 安全篇

1 許可權管理 從模組 表單 資料審核 功能按鈕全面資料安全驗證及管理。2 ip驗證 資料介面訪問進行ip校驗 3 登入 操作日誌 程式安全日誌 系統所有使用者登入 操作全部日誌記錄。程式安全日誌操作可檢視我之前寫過 loghelper 日誌記錄幫助類 4 sql注入校驗過濾 a 表單控制項js前端...