2011-02-26 131 views
1

在我的應用程序中,我有一張地圖,當用戶在地圖上執行任何操作時,會向服務器發送一個請求,要求它爲新邊界框提供地圖,但現在的問題是如果用戶說快速放大或持續平移地圖,我們最終將向服務器發送很多請求,並最終將結果發送回客戶端。在服務器上處理多個陳舊請求

現在我想在服務器端和客戶端都更優雅地處理這個問題。我想過在客戶端處理相同的方法,但我需要一種方法在服務器端優雅地執行相同的操作。我的意思是我不想最終處理陳舊的請求,我的客戶不希望反應frm無論如何。有沒有一種方法可以達到同樣的效果。

我在.NET Framework中使用MVC體系結構。

在此先感謝。

PSAll這些疑問顯然是AJAX查詢

回答

1

多種方式來做到這一點:

第一種方式: 在服務器端,你收到來自客戶端的新的邊界窗口信息的請求,讓服務器在開始處理之前,操作等待一小部分時間(以後可以微調持續時間)。如果在該等待時間內有來自同一客戶端的新請求(對於相同的縮放操作),則讓舊的請求被丟棄。當等待消失後沒有新的請求到達時,服務器將當前請求解釋爲最後一個請求並處理這個請求。爲了儘量減少客戶端出現的延遲,服務器可以準備處理該請求所需的資源,這些資源不依賴於縮放參數的確切細節。

第二種方式(可與第一種方法一起使用): 如果服務器有能力,則使用多個線程來處理客戶端請求。這樣,您可以放心地丟棄陳舊的結果,並且仍然可以避免縮放出現在客戶端上的任何延遲。

+0

有服務器處理請求是好的用戶體驗不應該受到影響..通過這種方法,如果我在服務器等待一秒鐘左右,對用戶的響應也將被延遲,用戶wnt得到一個即時的反饋.. – Baz1nga 2011-02-26 10:59:34

+0

和線程是不是一種選擇,因爲我們認爲線程管理是一個痛苦的屁股.. – Baz1nga 2011-02-26 11:00:19

+0

我不是指一秒鐘左右的等待時間。它應該足以讓服務器檢測到操作已發出另一個請求。通常在你提到的情況下,這一次將是一秒鐘的一小部分。從客戶端發送到服務器的兩個連續請求(顯然,我說的是兩個請求是在用戶的連續縮放操作下進行的)情況下,你認爲會花費多少時間? – Bhaskar 2011-02-26 11:38:48