網站開啟速度慢怎麼測試?網站測速、TTFB 與頁面效能排查指南
網站開啟慢怎麼測試?從 DNS 解析、Ping/RTT 延遲到 TTFB 回應與 Core Web Vitals,全面拆解網站效能排查步驟,幫你在不亂升級伺服器的前提下精準優化效能。
相信很多站長和維運都遇到過這種情況:自己在辦公室電腦上訪問首頁秒開,客戶卻在微信裡回報載入慢;或者上海電信節點測試一切正常,北京聯通用戶卻卡在白屏畫面發呆。進後台看伺服器 CPU 和頻寬都閒得很,測速也沒有報錯,但頁面就是要等上好一會兒才吐出內容。
網站測速絕不是看一個「載入用了幾秒」就完事了。這篇文章整理了一套接地氣的效能排查指南,從 DNS 解析延遲、Ping/RTT 往返時間,到 TTFB 回應與 Core Web Vitals 核心指標,幫你拆解整個訪問鏈路,徹底釐清網站到底慢在了哪一步。
一、網站為什麼會開啟很慢?
先把一個最容易產生誤解的問題說清楚:網站開啟慢,不一定代表伺服器效能差。
一次正常的網頁訪問,大致要經過下面這些步驟:
使用者輸入網址 ↓ DNS 解析 ↓ 建立 TCP 連線 ↓ HTTPS / TLS 握手 ↓ 傳送 HTTP 請求 ↓ 伺服器處理請求 ↓ 回傳第一個位元組(TTFB) ↓ 下載 HTML ↓ 載入 CSS / JavaScript / 圖片 / 字型 ↓ 瀏覽器渲染頁面
如果 DNS 解析用了 500ms,那麼瀏覽器還沒連線伺服器就已經浪費了半秒;如果網路 RTT 很高,每一次握手都會繼續增加等待時間;如果網路很快,但伺服器處理動態頁面用了兩秒,那麼 TTFB 一樣會很高。
即使伺服器和網路都沒有問題,一張幾 MB 的首屏圖片、幾個阻塞渲染的 JavaScript 檔案,也可能讓使用者長時間看到白屏。
因此,網站測速真正要看的不是一個數字,而是一組指標。
指標 | 主要反映什麼 | 異常時優先排查 |
|---|---|---|
DNS Time | 網域名稱解析耗時 | DNS 設定、解析服務 |
Ping / RTT | 基礎網路延遲 | 網路距離、線路品質 |
TCP Time | 建立連線耗時 | 網路線路、丟包 |
TLS Time | HTTPS 握手耗時 | 網路、TLS 設定 |
TTFB | 首個位元組回應時間 | 伺服器、後端程式 |
Download Time | 內容下載時間 | 檔案體積、頻寬 |
LCP | 頁面主體內容出現速度 | 首屏圖片、CSS、JS |
INP | 頁面互動回應能力 | JavaScript、主執行緒 |
CLS | 頁面視覺穩定性 | 圖片尺寸、廣告、非同步內容 |
排查網站速度時,如果能夠先判斷問題屬於「網路慢」「伺服器慢」還是「頁面資源慢」,後面的優化會容易很多。
二、第一步:先用多節點網站測速判斷哪些使用者訪問慢
自己開啟網站慢,並不能說明所有使用者都慢。同樣,自己訪問秒開,也不能說明其他地區的使用者訪問正常。這是網站效能排查裡很容易忽略的一點。
假設伺服器部署在上海,你自己也在上海,那麼本地訪問延遲可能只有十幾毫秒。但北京聯通、廣州移動、西安電信甚至海外使用者訪問時,資料經過的網路路徑完全不同,最終速度自然可能存在很大差異。遇到網站開啟速度慢的問題,第一步最好不是反覆按 F5,而是用Chahu進行一次多地區、多營運商網站測速。
Chahu 提供網站測速、線上 Ping、TCPing、DNS 查詢、路由追蹤等網路檢測能力,並覆蓋中國電信、中國聯通、中國移動以及港澳台和海外節點,更適合用來觀察不同地區和不同營運商之間的訪問差異。
測試時,可以選擇同一個 URL,重點觀察幾個問題:
北上廣深這些核心樞紐節點的延遲差距大不大?
電信、聯通、移動三家營運商之間,是不是有哪一家特別慢?
有沒有出現大面積節點逾時或者高丟包?
不同地區的 DNS 是不是被解析到了不同的 IP 上?
晚上高峰期測試時,資料是不是比白天明顯難看?
舉個實際排查中的典型例子:
測試節點 | 回應時間 |
上海電信 | 85ms |
杭州移動 | 92ms |
廣州電信 | 110ms |
北京聯通 | 420ms |
西安聯通 | 510ms |
看到這種資料,你就絕對不能下結論說「伺服器效能不行」。因為南方電信和移動都很正常,問題顯然砸在了北方聯通線路或者跨網互聯上。
但如果測試下來,幾十個節點全都在 2 秒以上徘徊,那別懷疑了,方向立刻轉向伺服器、資料庫或後端程式。
你可以對照下表來快速排查多節點測速的回饋:
測速現象 | 問題的初步定位 |
全國大部分地區都慢 | 網站本身架構或伺服器效能瓶頸 |
僅個別省份/地區慢 | 區域性網路鏈路或機房路由異常 |
某個特定營運商特別慢 | 單一營運商線路跨網或節點壅塞 |
國內訪問慢,海外訪問快 | 國內 CDN/機房節點選址或線路問題 |
海外訪問慢,國內訪問快 | 跨國物理距離遠,缺少海外加速節點 |
白天挺快,一到晚上就明顯變慢 | 營運商骨幹網高峰期壅塞,或伺服器頻寬超限 |
同一個節點多次測試波動極高 | 網路品質不穩定,存在丟包或抖動 |
多節點測速的核心價值,不是拿來給老闆回報「網站平均開啟速度是 X 毫秒」,而是幫你在最短時間內縮小戰場。
三、第二步:檢查 DNS 解析是不是拖慢了網站
使用者在瀏覽器敲下網域名稱時,電腦其實根本不知道伺服器在哪,它必須先向 DNS 伺服器詢問這個網域名稱對應的 IP。
通常情況下,DNS 解析很快,容易被忽略。但只要 DNS 服務商出點小毛病,或者設定不當,使用者甚至還沒摸到你的伺服器,就已經在入口處傻等了。
拿正常訪問和異常訪問做個對比:
正常狀態: DNS 耗時32ms➔ 連線48ms➔ 伺服器回應180ms(流暢)
DNS 瓶頸: DNS 耗時650ms➔ 連線50ms➔ 伺服器回應180ms(入口就卡住了)
如果是後一種情況,再去折騰伺服器程式就是徒勞。
在 Chahu 裡跑 DNS 查詢時,可以重點看不同地區的解析生效情況。如果你發現個別營運商的 DNS 回應特別慢,或者不同地區解析出來的 IP 出現了異常偏移(比如把廣東使用者解析到了新疆節點),那就該趕緊去檢查 DNS 託管商的設定、TTL 重新整理時間或者解析線路規劃了。
解析出來的 IP 如果錯了,後面所有的 Ping、TCP 連線和渲染都會被連累。
四、第三步:測試 Ping 和網路延遲,但不要只看 Ping
提到測速,絕大多數人第一反應就是「Ping 一下」。
Ping 反應的是測試節點到伺服器之間的物理往返延遲(RTT)。
如果 Ping 值只有25ms,說明網路鏈路非常理想;
如果 Ping 值飆到了180ms,說明資料封包在路上耗時較長(可能距離遠,也可能走了繞路)。
但是,Ping 值低,絕對不等於網頁開啟快。 這是無數人踩過的坑。
看個典型案例:
Ping: 30ms(極其出色)
TTFB: 1.6s(難看死)
網路極其通暢,但使用者依然要等 1.6 秒才能看到反應,這說明壓力全在伺服器後端。常見原因無非這幾種:
後端語言(PHP/Java/Node.js 等)程式碼執行效率低;
資料庫慢查詢、缺少索引,甚至死結;
密集呼叫了回應緩慢的第三方 API;
CPU 飆到 100% 或者資料庫連線池爆了。
反過來,如果:
Ping: 160ms
TTFB: 230ms
這說明伺服器處理程式其實只花了幾毫秒,大部分時間都折騰在物理傳輸線路上。
所以,Ping 只能用來回答:「網路通不通?物理距離遠不遠?線路上丟不丟包?」 它回答不了:「這個網頁到底能不能快速呈現出來?」
如果懷疑網路有問題,可以配合 TCPing、路由追蹤(Traceroute)去定位具體卡在哪個路由節點。
五、第四步:重點檢查 TTFB,判斷伺服器回應是不是太慢
如果多節點網路延遲都很低,但網站就是反應慢,這時最核心的排查指標就是 TTFB。
簡單來說,TTFB 就是從瀏覽器發出請求,到收到伺服器吐給它的第一個位元組所花費的時間。
如果使用者點擊連結後,瀏覽器長時間白屏,等了半天突然把內容一鼓作氣全部刷出來,這典型就是 TTFB 出了問題。
參照業界常規標準(如 Google web.dev 的建議):
TTFB 範圍 | 效能評估 | 處理建議 |
≤ 800ms | 良好 | 維持現狀 |
800ms ~ 1.8s | 一般 | 建議排查後端程式與資料庫 |
> 1.8s | 差 | 必須嚴肅排查伺服器負載及程式碼 |
當然,這個指標不能機械地硬套。一個吐出靜態 HTML 的頁面,和一個需要即時計算海量資料的後台系統,TTFB 自然沒有可比性。關鍵在於對比同類業務在不同時間段或最佳化前後的變化。
TTFB 長期偏高,重點排查這 5 個地方:
伺服器基礎資源:看看 CPU、記憶體、磁碟 I/O 是否打滿,並發連線數有沒有觸頂。
後端程式效能:程式碼裡有沒有寫死迴圈、過度複雜的邏輯或者高消耗的加密計算。
資料庫慢查詢:這是最常見的元兇。SQL 語句沒加索引,一次查詢掃了幾萬行,瞬間拖垮回應。
阻塞式的外部依賴:在請求回應過程中,是不是同步呼叫了簡訊介面、第三方支付或者外部統計 API?
動態快取缺失:本來可以走 Redis 或 Memcached 快取的頁面,每次訪問都在即時跑資料庫。
只要遇到「Ping 值很低,但頁面就是慢」的怪現象,盯著 TTFB 查後端,十有八九能抓出問題。
六、第五步:用瀑布圖找出到底哪個資源拖慢了網頁
還有一些時候:伺服器回應極快,TTFB 只有十幾毫秒,但瀏覽器裡的載入圖示一直在轉,頁面遲遲顯示不完整。這時候,排查重心就要從「伺服器」轉移到「頁面資源」上了。
你需要藉助瀏覽器自帶的 Chrome DevTools(F12)Network 面板,或者 WebPageTest、GTmetrix 等工具,拉出網頁載入的瀑布圖(Waterfall)。
瀑布圖會把每個資源的載入歷程按時間線拉開:
[HTML] ---- 180ms [style.css] -- 90ms [main.js] ------------------------ 1.8s [banner.jpg] ------------------------------ 2.4s [vendor.js] -------- 720ms
這種情況下,你就算把伺服器設定升級到頂級,網站該慢還是慢。因為真正拖垮使用者體驗的,是一張幾兆的大圖,或者一段載入緩慢的 JS。
看瀑布圖時,重點抓這幾類:
體積巨大的單體資源:比如未壓縮的原圖、幾兆大的前端 JS 包。
阻塞渲染的資源(Render-Blocking):放在<head>裡的複雜 JS 或 CSS,在它們下載並解析完之前,瀏覽器不敢繼續往下渲染。
不穩定的第三方指令碼:
第三方統計程式碼
客服線上彈窗
外鏈字型庫/地圖元件
廣告投放 SDK
你的主站 HTML 可能 200ms 就吐出來了,但只要掛了一個回應要 3 秒的第三方客服指令碼,使用者感受到的依然是「這個網站太卡了」。
七、第六步:再看 Core Web Vitals,判斷使用者真正看到頁面有多快
網路請求跑得快,不等於使用者看得爽。為了量化使用者真正的視覺與互動體驗,Google 提出了 Core Web Vitals(核心網頁指標),包含三個關鍵維度:
1. LCP(Largest Contentful Paint - 最大內容繪製)
看什麼:首屏裡那個最大的核心元素(大 Banner、產品主圖、大標題塊)多久能完全顯現。
優秀標準:≤ 2.5 秒。
坑點:伺服器回應再快,如果首頁 Banner 是一張 5MB 的無損 PNG,LCP 依然會慘不忍睹。
2. INP(Interaction to Next Paint - 互動到下次繪製)
看什麼:使用者在頁面上點一下按鈕、展開一下選單,頁面多久能做出視覺回饋。
優秀標準:≤ 200 毫秒。
坑點:有些網站開啟快,但點擊按鈕時頁面像卡死了一樣,這就是前端 JS 主執行緒被長任務(Long Tasks)佔滿導致的。
3. CLS(Cumulative Layout Shift - 累積版面配置偏移)
看什麼:頁面載入時,內容會不會莫名其妙地亂跳。
優秀標準:小於 0.1。
坑點:剛準備點「確認」,頂部突然塞進來一個廣告,把按鈕往下擠,導致使用者誤觸「取消」。這不一定拖慢速度,但極其破壞體驗。
八、網站測速結果應該怎麼看?
完成上面的測試之後,基本就可以根據資料快速縮小範圍了。
測速現象/資料特徵 | 最可能的問題出在哪? |
DNS Time 佔了總耗時大頭 | DNS 解析回應慢、TTL 設定不當或解析節點設定錯誤 |
Ping 值高、TCP/TLS 耗時長 | 物理距離太遠、線路品質差、缺少 CDN 或跨網節點 |
大面積丟包、延遲劇烈波動 | 機房網路鏈路不穩定、頻寬打滿或遭受流量攻擊 |
Ping 很低,但 TTFB 極高 | 伺服器 CPU/記憶體打滿、後端程式碼效率低、存在慢 SQL |
TTFB 很低,但 LCP 耗時很長 | 首屏圖片未壓縮、CSS/JS 阻塞渲染、缺少懶載入 |
HTML 很快,圖片/靜態資源極慢 | 資源未開啟 Gzip/Brotli、圖片體積大、未走 CDN 靜態加速 |
部分第三方 JS 耗時特別長 | 外掛的第三方統計、廣告、客服元件回應遲鈍 |
INP 指標飆高,互動卡頓 | 前端 JS 程式碼執行時間過長,阻塞了瀏覽器主執行緒 |
全國幾十個節點,只有某一地區慢 | 該地區的單一營運商線路或區域網路節點路由問題 |
白天速度正常,一到晚上就變慢 | 骨幹網高峰期壅塞、機房出口頻寬超限或伺服器並發瓶頸 |
第一次開啟慢,第二次開啟秒開 | 瀏覽器/CDN 快取生效、DNS 本機快取生效或資料庫熱點快取生效 |
排查的終極目的不是看哪個指標紅了,而是快速找到那個最卡頓的瓶頸,然後一針見血地去解決它。
九、網站開啟速度多少算正常?
行業裡沒有放之四海而皆準的絕對標準。後台管理系統和電商首頁的載入量完全不是一個量級;國內訪問國內伺服器,和跨國訪問歐美伺服器,要求也絕不可能一致。
在日常維護中,可以參考以下經驗指標:
DNS 解析:越快越好,盡量控制在50ms以內;
Ping / RTT:同城/同區域< 30ms,跨省同營運商< 80ms,跨網/跨國視線路而定;
TTFB:靜態頁面建議< 300ms,動態業務頁面盡量控制在800ms以內;
LCP:盡量控制在2.5 秒內完成首屏核心渲染;
INP:互動回應要在200 毫秒內給出回饋;
CLS:頁面版面配置偏移量控制在0.1以下。
相較於盯著絕對毫秒數,看最佳化前後的對比趨勢更有意義:
最佳化前:上海電信1.6s/ 北京聯通2.3s/ 廣州移動1.9s
最佳化後:上海電信0.8s/ 北京聯通1.1s/ 廣州移動0.9s
這種實打實的效能提升,才是對最佳化工作最好的交代。
另外,做對比測試時,務必保持變數一致(使用相同的測試節點、相同的網路環境、相同的時間段和相同的 URL)。
十、根據測速結果,應該怎麼最佳化網站速度?
拿到資料定位到瓶頸後,就可以對症下藥了:
1. 如果卡在 DNS
換用更穩定的高防/智慧 DNS 服務商;
檢查網域名稱解析記錄是否存在多重 CNAME 巢狀;
合理調整 TTL 快取時間;
針對不同營運商和地區設定針對性的解析線路。
2. 如果卡在網路延遲高
重點檢查高延遲地區,配合路由追蹤看看資料封包是不是繞路了;
部署 CDN 加速,把靜態資源推到邊緣節點,讓使用者就近取得;
對於面向全國或跨國業務,避免單機房單線路部署,引入多線機房或 BGP 線路。
3. 如果卡在 TTFB(後端慢)
引入 Redis/Memcached 減少對資料庫的直接開銷;
最佳化慢 SQL 語句,建立合理的資料庫索引;
開啟頁面級/介面級 HTTP 快取;
將耗時較長的非核心邏輯(如發郵件、發簡訊、寫日誌)改成非同步佇列處理;
檢查並最佳化後端程式碼邏輯,降低伺服器 CPU 和記憶體開銷。
4. 如果卡在圖片下載
格式升級:能用 WebP、AVIF 的地方盡量別用原圖 PNG/JPG;
體積壓縮:用工具對圖片進行無損/有損壓縮;
尺寸適配:前端顯示 400×300 的地方,不要從後端拉取 4000×3000 的原圖;
非首屏圖片全面開啟懶載入(Lazy Load)。
5. 如果卡在 JS/CSS 太重
前端打包進行 Code Splitting(程式碼拆分),避免把所有邏輯塞進一個龐大的 JS 包裡;
對靜態資源開啟 Gzip 或 Brotli 壓縮(通常能減少 60%~80% 的體積);
非必須的 JS 賦予defer或async屬性,防止阻塞 HTML 渲染;
清理沒用到的庫或冗餘程式碼,減少主執行緒執行時間。
6. 如果卡在第三方服務
對第三方統計、客服指令碼進行非同步載入;
評估非核心第三方元件的必要性,能砍則砍;
本地化託管第三方 CSS/字型庫,避免因外部網域名稱回應慢拖累主站。
排查網站開啟慢,最忌諱的就是病急亂投醫。記住這套標準流程:先用 Chahu 多節點測速定位地區與營運商差異,再看 TTFB 確認後端是否卡頓,最後拉瀑布圖排查前端大圖與 JS 阻塞。
明確了瓶頸在哪裡,最佳化才能一針見血。如果你的網站目前正面臨特定地區卡頓或者 TTFB 偏高的現象,不妨按照文中步驟抓一次資料。遇到不確定的瀑布圖節點,也歡迎在留言區留下測速截圖,我們一起分析排查。



