誰適合閱讀這篇文章?

如果您的 Web 應用程序中包含搜索框、分頁功能,或者需要多次通過 API 調用加載相同內容,那么這篇文章將為您提供有價值的優化思路。


實現緩存的基本思路

我們將使用 JavaScript 的 Fetch API 從服務器檢索數據,并在輸入框中鍵入內容時實時獲取相關結果,最終將結果顯示在頁面上。以下是正常代碼流的基本框圖:

正常 API 調用流程

接下來,我們將學習如何通過實現緩存機制來優化這一流程:

緩存網絡調用流程


深入了解緩存機制

為了更好地理解緩存機制的工作原理,我們可以參考以下流程圖:

緩存機制流程圖


分解復雜性:核心功能與實現

核心功能

  1. 用戶在輸入框中鍵入內容。
  2. 每次按鍵觸發一個函數調用。
  3. 調用自定義的 AJAX 函數以獲取數據。
  4. 將返回的結果展示在頁面上。

自定義 AJAX 函數的工作原理

  1. 生成請求 URL 和數據的 MD5 哈希值。
  2. 檢查緩存中是否存在對應的哈希值。
  3. 如果緩存命中,直接返回緩存數據。
  4. 如果緩存未命中,則發起網絡請求獲取數據。
  5. 將獲取的數據存儲到緩存中。
  6. 將數據返回給回調函數。
  7. 通過緩存機制減少 70% 的網絡請求,從而降低服務器負載。

以下是實現該功能的代碼示例:

// 用于存儲緩存數據
var cache = [];

// 輸入事件處理函數
function on_type(r = 0, val = null) {
    // 在 API 調用之前
    if (!r) {
        ajax(fetch.php?search=${val}, on_type);
    }
    // 在 API 調用之后
    else {
        // 使用結果填充 DOM
        let codes = r.results.map(e => <li>${e}</li>).join('');
        document.getElementById('results').innerHTML = codes;
    }
}// 實現緩存的自定義 AJAX 函數
function ajax(url, callback) {
    // 為每個唯一的 API 調用生成唯一字符串
    let hash = md5(url);
    // 檢查緩存中是否存在數據
    let item = cache.find(e => e.hash === hash);
    // 如果找到緩存數據,則返回緩存數據
    if (item) return callback(item.r);
    // 如果未命中緩存,則發起網絡請求
    fetch(url)
        .then(response => response.json())
        .then(response => {
            // 將數據存儲到緩存中
            save_in_cache(hash, response);
            callback(response);
        });
}// 緩存數據存儲函數
function save_in_cache(hash, response) {
    // 將數據存儲到緩存中
    cache.push({ hash, r: response });
    // 限制緩存大小為 50 條記錄,避免內存占用過高
    if (cache.length > 50) cache.splice(0, cache.length - 50);
}

優化成果

通過上述代碼實現的緩存機制,我們可以顯著減少網絡請求次數。以下 GIF 動圖展示了優化后的效果:在 90 次網絡調用中,有 69 次是緩存命中,僅 24% 的請求是實際的網絡調用,其余 76% 的數據均來自緩存。

緩存優化效果


總結與進一步優化

通過本文的介紹,我們學習了如何在網絡調用中實現緩存機制,從而減少網絡請求次數并降低服務器負載。除此之外,您還可以利用 sessionStorage 將緩存提升到更高的層次,以實現更持久的存儲。

希望本文能為您提供一些啟發,幫助您優化 Web 應用程序的性能!

原文鏈接: https://xbytelab.com/blog/Implement-caching-in-js-fetch-API/1293046
熱門推薦
一個賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業工程師共享工作效率翻倍的秘密
返回頂部
上一篇
介紹全新的Rust REST API客戶端庫
下一篇
使用JavaScript Cache API的實踐 - LogRocket博客
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
69av一区二区三区| 麻豆成人久久精品二区三区小说| 久久福利视频一区二区| 国产精品污污网站在线观看| 欧美一区二区三区四区视频| 欧美在线观看视频一区二区三区| 国产.欧美.日韩| 久久精品久久精品| 日本不卡的三区四区五区| 亚洲高清中文字幕| 夜夜爽夜夜爽精品视频| 亚洲啪啪综合av一区二区三区| 久久久精品中文字幕麻豆发布| 日韩三级免费观看| 精品三级在线观看| 久久久激情视频| 国产精品丝袜一区| 国产精品色婷婷| 国产精品卡一卡二卡三| 国产精品久久久久久久久果冻传媒| 久久综合色鬼综合色| 久久久国产一区二区三区四区小说| 久久伊人中文字幕| 欧美zozo另类异族| 久久久久久久久97黄色工厂| 久久亚洲春色中文字幕久久久| 2014亚洲片线观看视频免费| 亚洲国产精品高清| 亚洲日本va在线观看| 亚洲夂夂婷婷色拍ww47| 日本午夜精品一区二区三区电影| 毛片av一区二区| 国产一区二区精品久久| jlzzjlzz亚洲日本少妇| 色综合天天综合狠狠| 欧美精品在线一区二区三区| 日韩欧美一级二级三级久久久 | 国产乱淫av一区二区三区 | 成人在线综合网| 在线视频欧美精品| 欧美岛国在线观看| 亚洲欧洲中文日韩久久av乱码| 亚洲二区在线视频| 国产精品一线二线三线| 欧美亚洲综合色| 中国色在线观看另类| 图片区小说区区亚洲影院| 国产成人av一区| 在线成人免费视频| 自拍视频在线观看一区二区| 蜜臀av一区二区| 欧美中文一区二区三区| 日本一区二区免费在线| 天堂成人国产精品一区| 99精品视频一区| 久久久久久久综合日本| 日本午夜精品视频在线观看| 成人av集中营| 国产婷婷色一区二区三区| 婷婷开心激情综合| 一本大道av一区二区在线播放| 久久久久久麻豆| 日韩国产欧美在线观看| 在线视频你懂得一区二区三区| 中文幕一区二区三区久久蜜桃| 蜜臀av性久久久久av蜜臀妖精| 欧美亚洲日本国产| 亚洲免费视频成人| 成人黄色免费短视频| 国产色一区二区| 国产一区91精品张津瑜| 欧美一区二区三区公司| 日韩激情视频网站| 欧美一区二区黄色| 老司机免费视频一区二区| 欧美一级久久久| 麻豆国产精品官网| 久久一二三国产| 国产福利91精品| 国产精品国产成人国产三级| av在线一区二区三区| 中文字幕精品三区| 91一区二区在线| 亚洲一区在线播放| 91精品国产aⅴ一区二区| 丝袜亚洲精品中文字幕一区| 欧美人与禽zozo性伦| 日韩高清不卡一区二区| 欧美一级欧美三级在线观看 | 国产成人啪免费观看软件| 欧美激情一区二区| 一本在线高清不卡dvd| 亚洲永久免费av| 日韩三级在线免费观看| 成人综合婷婷国产精品久久蜜臀 | 久久久久久久av麻豆果冻| 国产盗摄女厕一区二区三区| 亚洲色图一区二区三区| 91麻豆精品国产| 国产成人综合精品三级| 国产精品久久三区| 51精品视频一区二区三区| 国产美女精品人人做人人爽| 亚洲图片欧美激情| 日韩一区二区三区免费看| 成人午夜在线视频| 日韩精品乱码av一区二区| 国产日产精品1区| 欧美日韩一区三区| 国产99久久久国产精品免费看| 一区二区三区成人| 久久久国产精品不卡| 精品视频一区二区不卡| 丁香婷婷深情五月亚洲| 日韩av不卡在线观看| 综合激情成人伊人| 久久精品无码一区二区三区| 欧美视频中文字幕| 丰满白嫩尤物一区二区| 日韩精品乱码av一区二区| 1区2区3区欧美| 久久久另类综合| 在线播放亚洲一区| 成人在线综合网| 国产综合久久久久影院| 天堂va蜜桃一区二区三区漫画版| 18成人在线视频| 国产清纯白嫩初高生在线观看91| 欧美电影影音先锋| 欧美午夜在线一二页| www.欧美日韩国产在线| 风间由美一区二区三区在线观看| 激情文学综合网| 久久电影国产免费久久电影| 亚洲综合色网站| 亚洲国产一区二区三区青草影视| 亚洲人成网站色在线观看| 中文字幕在线一区免费| 国产精品美女久久久久久久| 国产日韩欧美电影| 欧美激情一区二区三区四区| 国产亚洲污的网站| 国产精品美女久久久久久久久久久| 久久人人97超碰com| 久久久亚洲综合| 国产区在线观看成人精品| 久久综合狠狠综合久久激情| 国产午夜三级一区二区三| 国产精品女主播在线观看| 国产精品的网站| 一区二区三区欧美在线观看| 亚洲成人av一区二区三区| 偷窥国产亚洲免费视频| 日韩高清在线观看| 久久aⅴ国产欧美74aaa| 国产宾馆实践打屁股91| 一本高清dvd不卡在线观看| 欧美猛男gaygay网站| 精品剧情在线观看| 国产精品人人做人人爽人人添 | 欧美96一区二区免费视频| 久久精品理论片| 国产成人免费视频网站| 一本一道波多野结衣一区二区| 欧美精品一二三四| 国产日韩三级在线| 亚洲一区电影777| 韩国v欧美v日本v亚洲v| 国产黄色91视频| 欧美日韩午夜在线视频| 久久久九九九九| 一区二区三区在线免费视频| 奇米一区二区三区av| 99久久夜色精品国产网站| 欧美群妇大交群的观看方式| 中文字幕第一区第二区| 人人狠狠综合久久亚洲| 96av麻豆蜜桃一区二区| 日韩一区二区三区精品视频| 亚洲日本va在线观看| 国内外精品视频| 91精品欧美福利在线观看| 中文字幕日韩精品一区| 精品一区二区三区在线观看| 色综合久久久久久久| 久久久精品免费观看| 午夜精品在线看| 在线免费不卡电影| 中文字幕在线视频一区| 久久激五月天综合精品| 欧美久久久久久久久久| 亚洲裸体在线观看| www..com久久爱| 亚洲国产精品传媒在线观看| 国产一本一道久久香蕉| 久久综合九色欧美综合狠狠| 经典三级视频一区| 久久久久久久网| 成人一区二区视频| 国产精品久久久久国产精品日日|