2011-08-23 103 views
3

使用jQuery .getJSON vs .post哪個更快?

$.getJSON(); 

$.post(); 

我試圖通過一個網頁,僅僅是AJAX請求 發送一些參數和JSON或HTML片段獲得了一定的成果。

我想知道哪一個更快?

假設HTML文件將是簡單的純文本布爾值(true或false)

回答

6

正如其他人所說,這兩個功能之間並沒有真正的區別,因爲他們都將通過XMLHttpRequest發送。

如果服務器正在處理具有相同代碼的兩個請求,則處理時間應該相同。

因此,可以將問題轉換爲HTTP GET請求或POST請求更快的問題?

由於POST請求需要兩個額外的HTTP標頭(Content-TypeContent-Length),與GET請求相比,後者應該更快(因爲更少的數據將被傳輸)。

但這只是速度,我認爲最好遵循REST這裏的指導方針。如果您要修改某些內容,請使用POST,如果您想要獲取某些內容,請使用GET。

另一件重要的事情,GET響應可以緩存,但我有problems caching POST

1

$.getJSON();是$.ajax();的快捷方式,它也稱爲$.post();,因此您不會看到太多差異(但會更容易直接使用$.getJSON())。

jquery doc

[編輯]寧姆比我快......

3

我不認爲這會有所作爲既利用ajax.post加載數據使用http post請求,其中作爲getJSON使用http get請求更多關於您不必明確告訴getJSONdataType

3

如果它是一個HTTP操作,從服務器檢索數據持久(更新)任何東西,GET是使用正確的語義。

無論是發佈還是使用HTTP,性能差異都可以忽略不計,特別是考慮到WAN通信的變量。

2

這是舊的,但...

我們都必須記住:CSRF/XSRF。

如果你做這種方式:

 
$.ajax({ 
    type: "POST", 
    dataType: "json", 
    url: url, 
    data: { 
    token : 'pass-some-security-token-here' 
    }, 
    cache: false, 
    success: function(data) { 
    //do your stuff here 
    } 
}); 

你會接受她那麼像這樣,抵消最CSRF/XSRF

 
if (isset($_POST['token'])) { //you can also test token further 
    //do your stuff her and send back result 
} else { 
    //error: sorry, invalid, or no security token 
} 

在許多情況下得到的是壞人的邀請,作爲getJSON使用GET HTTP請求。