當我們有大量數據要傳送時最好的辦法是一次發出多個只傳遞少量信息的Ajax調用時。
如果你正用一個Ajax調用發送大量數據,那么最好是結束這種做法,因為這樣做並不能節約時間。
因此,需要傳送大量數據能成為我們在GET和POST之間猶豫不決的理由嗎?這兩個方法都是為不同的目的而設計的,
兩者的不同也在於其使用目的。這一說法不僅適用於GET和POST的使用,也適用於其他的方法。
GET的目的就如同其名字一樣是用於獲取信息的。它旨在顯示出頁面上你要閱讀的信息。瀏覽器會緩沖GET請求的執行結果,
如果同樣的GET請求再次發出,瀏覽器就會顯示緩沖的結果而不是重新運行整個請求。這一流程不同於瀏覽器的處理過程,但是
它是有意設計成這樣以使GET調用更有效率。GET調用會檢索要顯示在頁面中的數據,數據不會在服務器上被更改,因此重新請
求相同數據的時候會得到相同的結果。
POST方法應該用於你需要更新服務器信息的地方。如某調用要更改保存在服務器上的數據,而從兩個同樣的POST調用返回
的結果或許會完全不同,因為第二個POST調用的值與第一個的值不相同,這是由於第一個調用已經更新了其中一些值。POST調
用通常會從服務器上獲取響應而不是保持前一個響應的緩沖。
因此,不要用數據的量來決定是要選擇GET還是POST,而應該按照目的在兩者間作出選擇。如果調用是要檢索服務器上的數
據則使用GET。如果要檢索的值會隨時間和更新進程的改變而改變則要在GET調用中添加一個當前時間參數,這樣后面的調用才不
會使用先前的不正確的緩沖。如果調用是向服務器上發送任意數據,就可以使用POST。
GET請求
POST請求
此處,我們發現了get請求和post請求在服務器端的區別:
在客戶端使用get請求時,服務器端使用Request.QueryString來獲取參數,而客戶端使用post請求時,服務器端使用Request.Form
來獲取參數.
關於服務器端獲取數據,我們還可以使用一個通用的獲取參數的方式即Request["username"],但是此方法存在一個問題,我們隨
后來講.
下面,我們使用HttpWatch來看下,當使用get和post方式發送請求時,客戶端究竟發送了什么,收到了什么.
對於get請求和post請求中的時間差,請不要在意,因為是在不同時間按下的get按鈕和post按鈕.
事實上,我們不應該不僅僅只將這個標准作為選擇怎樣使用GET和POST調用的標准,在處理頁面處理形
式的時候也可以將它作為取舍這兩個調用的標准。