一 前言
關於頁面跳轉的方式常用的應該就是,鏈接跳轉,js跳轉,Server.Tranfser和Response.Redirect 這幾種,可是在Tranfser與Redirect之間用哪種更好(本文只討論這兩種),以及它們之間的區別各位又是否深究過呢?至少我是沒有,對此也深入研究了一下,特意分享給大家 如有不對之處還望大家指出。
二 Transfer與Redirect區別
2.1 Transfer跳轉方式只能在同一站內跳轉不能跨站點,當以下代碼執行時會拋出異常,而用Redirect方法則能正常跳轉
Server.Transfer("http://www.baidu.com");
2.2 Transfer跳轉URL地址不會改變,而用Redirect方式URL則會顯示跳轉后的URL地址
我默認的地址是Index.aspx頁面
2.2.1Transfer:
2.2.2Redirect :
2.3 Transfer 可以將上一頁面的Form表單數據傳遞到跳轉頁面,而Redirect則不行
在Index頁面Form表單中添加一個textbox,我們來看看兩者的區別
<input id="" name="txtTransfer" type="text" value=""/>
Transfer:
當然你可以選擇不將上一頁面的表單內容帶至跳轉頁面多加一個參數即可
//取消傳遞表單數據 Server.Transfer("Transfer.aspx",false);
Redirect:
Transfer跳轉客戶端只用發一次請求就可以跳轉而Redirect客戶端則需要兩次請求才成完成跳轉
接下來就深入的看看這兩種 方法的差別吧
三 原理解析請次數的區別
Transfer 為什么與Redirect的跳轉過程到底是有什么樣的區別呢,我們先看下用Fiddler抓到的請求
Transfer
Redirect:
然后展開Redirect請求中狀態碼為302的Http請求詳情如下:
從上面的圖可以看出Transfer在客戶端發出跳轉請求后,在服務端就直接發生了跳轉並直接響應了跳轉頁的內容。
而Redirect方法客戶端則發出了兩次請求步驟如下
1 客戶端發出跳轉請求,服務端接收后 先響應302的狀態碼 並帶上跳轉的URL
2 客戶端接收302狀態碼+URL后再次向服務端請求跳轉頁面的內容 步驟如下圖
通過上面的兩張圖可以很明顯的知道Transfer與Redirect在請求上的區別,Transfer比Redirect少了一次Http請求所以在資源消耗,服務器壓力上來說Transfer是略勝一籌的
當然這兩種方法並沒有誰好誰壞的區別,我相信存在必然合理,兩者都有各自的優勢。本文目的只是對兩種跳轉方式的區別做一個詳解 僅此而以。
四 總結
在生活與工作中要善於抓住細節,多思考多實踐,程序員應該要有抱根問底的習慣,做一個有思想的程序員,又干掉自己的一個盲區!希望本文能給您帶來一點點收獲!
本人水平有限如有理解不對之處還望指出~謝謝
如果您覺得本文有給您帶來一點收獲,不妨點個推薦,為我的付出支持一下,謝謝~
如果希望在技術的道路上能有更多的朋友,那就關注下我吧,讓我們一起在技術的路上奔跑