<%
If Session("isLogin")="" Then
Response.Redirect "Login.asp"
End If
'正常的內容
%>
那麼,其實Response.Redirect方法, 是返回給浏覽器一個Http Header狀態為302的標記碼,
HTTP 1.0 302 Object Moved
Location URL
這樣,實際上是浏覽器請求服務器的content.asp 文件,content.asp文件經過處理以後告訴浏覽器,你先訪問login.asp文件, 於是浏覽器再向服務器發送一個到login.asp頁面的請求。所以, 實際上是轉了一個彎。這樣, 當客戶端網絡狀況不是很好的情況下,兩次請求會大大的降低應用程序的反應速度,甚至占用多余的帶寬。特別是,當需要傳遞參數的時候,也會有一些問題。
而在IIS5中, 提供了Server.Transfer和Server.Execute方法。
這兩種方法,都是在服務器間完成轉向的,因此可以減少客戶端的網絡帶寬的占有,但是因為服務器端要保存程序1的一些狀態,也會消耗一定的內存。
//本文來自電腦軟硬件應用網www.45it.com轉載請注明
那麼Server.Transfer和Server.Execute又有什麼不同呢?
通過例子來說明吧,這裡有兩個文件,file1.asp和file2.asp
我們都是要在file1.asp裡面轉向到file2.asp
用Tansfer方法時:
file1.asp
<%
Response.Write "File 1 Header<br>"
Server.Transfer "file2.asp"
'到這裡就停止執行下面的語句,轉向了
Response.Write "File 1 Footer<br>"
%>
file2.asp
<%
Response.Write "小雨在線"
%>
所有,當我們執行file1.asp文件時, 我們得到的結果是
File 1 Header
小雨在線
因為,當程序遇到Transfer方法時,會停止執行後面的語句,轉而執行轉向的程序
當使用Execute方法時:
file1.asp
<%
Response.Write "File 1 Header<br>"
Server.Execute "file2.asp"
'到這裡執行file2.asp,完成之後繼續執行剩下的內容
Response.Write "File 1 Footer<br>"
%>
file2.asp
<%
Response.Write "File 2"
%>
所有,當我們執行file1.asp文件時, 我們得到的結果是
File 1 Header
File2
File 1 Footer
因為,當程序遇到Execute方法時,會執行轉向的程序,完成之後再繼續執行第一頁的剩下的內容。
其實Execute方法就像我們經常寫的子程序一樣,類似於子程序調用。
如下圖所示: