簡體   English   中英

如何在瀏覽器中預取一個返回JSON格式數據的ajax調用

[英]How to prefetch an ajax call that returns a JSON format data in the browser

我有一個用例,其中在頁面加載時我進行了多個ajax調用。 初始負載向服務器發送ajax請求,該請求以JSON格式獲取數據,隨后的用戶單擊時,將觸發其他ajax調用,這些調用使數據庫調用在服務器端計算JSON,瀏覽器通常處於空閑狀態並等待要返回的JSON。 我正在考慮一些方法,可以從應用程序方面加快執行速度。

Jquery中是否有一種方法可以預先觸發后續的Ajax請求並將其保存在客戶端上的某個位置,以便在用戶單擊該頁面時,JSON從緩存中解析並呈現在DOM中,而不是延遲請求傳遞到服務器。

jQuery AJAX請求被瀏覽器緩存(假設它是GET請求,則POST總是會到達服務器)。 因此,如果您可以預測最有可能發生的調用,則可以在初始化期間派生一個函數來搶先進行這些調用,並且應該從瀏覽器緩存中獲取后續調用的結果。 但是,請確保服務器實際發送了適當的緩存頭。

另一個選擇是將對jQuery AJAX函數的調用包裝到您自己的函數中,並將數據保存在內存中的數組中。 在這種情況下,請確保您有某種方式可以老化舊的結果,否則您將填滿瀏覽器的內存。

您可以做的是在加載頁面時觸發所有AJAX請求,並將它們分配給Promise變量。 當您需要使用結果時,請使用$.when()

var ajax1 = $.ajax( { ... } );
...
$.when(ajax1).then(function(response) {
    // Do what you need
});

您可以

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM