性能優化系列都將以這張圖出發進行全鏈路分析,讓我們慢慢展開~
認識重定向#
頁面重定向是指,當我們訪問一個 A 鏈接的頁面時,瀏覽器自動將鏈接 A 重定向到鏈接 B 的頁面訪問,轉而向 B 鏈接發起新的請求。這個過程用戶一般是無感知的
正確配置重定向可傳遞舊網站的SEO價值到新地址網站,也能在網站維護 / 升級期間平滑過渡不損害用戶體驗
什麼情況需要重定向#
- 頁面發生移動,即 URL 變化了,域名、path 等
- 頁面維護升級 / 刪除時保證舊鏈接可用性,重定向到新的頁面或友好的 404 頁,不損害用戶體驗
- 規範 URL,即將多種 URL 寫法統一為單一 URL 利於 SEO
重定向的類型#
- HTTP 重定向,302 臨時重定向、301 永久重定向等等;
- HTML meta 標籤重定向,
<meta http-equiv="refresh" content="3;url=https://alifeiliu.xlog.app/" />
,3s 後重定向到指定 url; - JS 重定向,
window.location = "https://alifeiliu.xlog.app/"
、location.href = "https://alifeiliu.xlog.app/"
;
重定向耗時計算#
啊,找一個 301 的 URL 真難,打開控制台,然後地址欄輸入https://w3c.github.io/navigation-timing:
控制台輸入以下代碼:
const pnt = window.performance.getEntries()[0] // 獲取PerformanceNavigationTiming Entry
console.log(pnt.redirectEnd - pnt.redirectStart) // 重定向時間計算
打印了337.5ms
的重定向時間:
這個時間是與網速有關的。因為要等待 Server Response 中的 301、302 等重定向相關 Status Code,再根據響應頭中的 Location 參數拿到新 URL 接著進行重定向,至少需要一個 RTT。因此距離伺服器遠或網絡狀況差的用戶,重定向時間也會相應變差