由于重定向會(huì)觸發(fā)額外的HTTP請(qǐng)求響應(yīng)周期,并會(huì)額外延長往返時(shí)間延遲,因此,將應(yīng)用發(fā)出的重定向數(shù)量降至最低至關(guān)重要。避免HTTP重定向可以縮減用戶等待網(wǎng)頁加載的時(shí)間。我們建議您仔細(xì)斟酌自己網(wǎng)站設(shè)計(jì),看看可以在哪些方面提升網(wǎng)站性能。
以下是重定向模式的一些優(yōu)劣示例:
優(yōu)質(zhì):example.com使用響應(yīng)性網(wǎng)頁設(shè)計(jì),無需重定向
中等:example.com -> m.example.com/home 劣質(zhì):example.com -> www.example.com -> m.example.com -> m.example.com/home Web應(yīng)用程序重定向的幾個(gè)原因 有時(shí)有必要為您的應(yīng)用到瀏覽器從一個(gè)URL到另一個(gè)重定向。Web應(yīng)用程序的重定向問題有幾個(gè)原因: 以指示已移動(dòng)的資源的新位置。 要跟蹤的點(diǎn)擊和展示和日志提交頁面。 預(yù)留多個(gè)域,允許“用戶友好”或“虛榮”域名和網(wǎng)址,并趕上拼錯(cuò)/輸錯(cuò)網(wǎng)址。 一個(gè)網(wǎng)站或應(yīng)用程序的不同部分,不同的國家代碼頂級(jí)域名,不同的協(xié)議(HTTP到HTTPS),不同的安全策略(例如:未經(jīng)認(rèn)證和認(rèn)證網(wǎng)頁)等之間的連接。 要尾隨斜線添加到URL目錄名,使它們的內(nèi)容訪問瀏覽器。 不管是什么原因,重定向會(huì)觸發(fā)額外的HTTP請(qǐng)求- 響應(yīng)周期,并添加往返時(shí)間延遲。重要的是要盡量減少您的應(yīng)用程序發(fā)出的重定向的數(shù)量- 特別是啟動(dòng)您的主頁的所需資源。要做到這一點(diǎn),最好的方法是您使用重定向限制。 建議
消除網(wǎng)站不必要的重定向
這里有一些策略,簡(jiǎn)單地消除不必要的重定向: 在您的頁面永遠(yuǎn)不要引用已知重定向到其他URL的URLs。當(dāng)資源改變位置時(shí),您的應(yīng)用程序需要有一個(gè)更新URL引用的方法。 永遠(yuǎn)不要使用一個(gè)以上的重定向來獲得給定的資源。例如,如果C是目標(biāo)頁,并且有兩個(gè)不同的開始點(diǎn),A和B,A和B應(yīng)直接定向到C;A不應(yīng)該先定向到B,再從B重定向到C。 盡量減少出現(xiàn)重定向,但實(shí)際上并不提供內(nèi)容的外域數(shù)量。有時(shí)候,人們需要從多個(gè)域重定向,以獲得不正確的用戶輸入(拼寫錯(cuò)誤/輸錯(cuò)網(wǎng)址)。但是,如果你要引導(dǎo)用戶他們可以從多個(gè)URL到達(dá)你的網(wǎng)站,你需要從你的名字每一個(gè)變種去購買新的域名。 使用服務(wù)器重寫 以便用戶輸入url 許多Web服務(wù)器支持內(nèi)部的“重寫”。這允許你配置從一個(gè)URL到另一個(gè)URL的映射;當(dāng)客戶端請(qǐng)求無效的URL,服務(wù)器自動(dòng)重新映射到正確的資源,而不發(fā)出重定向。一定要使用他們獲得你無法控制的URL。千萬不要把它們作為易更新URL引用的一個(gè)手段;你應(yīng)該總是使用一個(gè)單一的URL指向一個(gè)資源。此外,如果可能緩存資源,還要避免使用它們。自動(dòng)在目錄名稱末尾添加所需的尾隨斜線是用戶輸入的URL,這是一個(gè)很好的重寫機(jī)制的例子。
在后臺(tái)跟追網(wǎng)絡(luò)流量
為了跟追網(wǎng)頁各種屬性之間的流量,有些網(wǎng)站使用中間重定向到一個(gè)頁面,它記錄了一個(gè)獨(dú)立的中央服務(wù)器上的所有屬性。然而,因?yàn)檫@樣的重定向會(huì)添加頁面過渡之間的延遲,應(yīng)該避免他們,并尋找在后臺(tái)記錄頁面訪問量的其他方式。 記錄頁面訪問,一個(gè)流行的方法是在目標(biāo)頁面(或onload事件處理程序)的底部上包括一段JavaScript,當(dāng)用戶加載頁面時(shí),通知日志服務(wù)器。這樣做的最常見的方式是建立一個(gè)請(qǐng)求給服務(wù)器,并把各種參數(shù)的數(shù)據(jù)進(jìn)行編碼加密。為了保持HTTP響應(yīng)非常小的,請(qǐng)求一個(gè)透明的1x1像素的圖像是一個(gè)很好的選擇。稍微更優(yōu)化的方法是使用一個(gè)HTTP204響應(yīng)(“沒有內(nèi)容”),這稍微比1x1的GIF小。 |