精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

解決頁面關閉時數據丟失:用好sendBeacon與fetch的keepalive

開發 前端
avigator.sendBeacon()和fetch with keepalive徹底解決了頁面關閉時數據丟失的問題。無論是用戶快速關閉頁面還是跳轉到其他網站,重要的數據都能可靠地送達服務器。

不少開發者遇到過這樣的問題:線上數據看板顯示用戶行為數據不全,明明功能已經上線,但收集到的數據卻比預期少很多。

經過排查發現,很多數據丟失發生在用戶關閉頁面或跳轉離開的時候。原本通過fetch發送的請求,因為頁面關閉而被瀏覽器強制取消,導致數據無法成功送達服務器。

問題并不在于代碼邏輯,而是瀏覽器的運行機制決定的。當用戶關閉標簽頁時,瀏覽器會立即停止當前頁面的所有JavaScript執行,包括尚未完成的網絡請求。這意味著,即使用戶已經觸發了數據上報,這些請求也可能在到達服務器前就被中斷了。

navigator.sendBeacon的解決方案

從2014年開始,瀏覽器提供了一個專門的api來解決這個問題:navigator.sendBeacon()。這個API的設計目的就是在頁面卸載時可靠地發送數據。

與fetch不同,sendBeacon不會等待服務器響應,也不會延遲頁面的關閉過程。它會將請求放入瀏覽器的發送隊列,然后在后臺完成傳輸,即使JavaScript已經停止執行也不會影響發送。

對比一下兩種寫法的區別:

// 這種寫法在頁面關閉時可能失敗
window.addEventListener('beforeunload', () => {
fetch('/analytics', {
method: 'POST',
body: JSON.stringify({ event: 'page_exit' })
  }); // 可能被取消
});

// 使用sendBeacon更可靠
window.addEventListener('beforeunload', () => {
navigator.sendBeacon('/analytics', 
    JSON.stringify({ event: 'page_exit' })
  ); // 能夠成功進入發送隊列
});

當用戶快速關閉頁面或跳轉到其他頁面時,這兩種方式的差異非常明顯。瀏覽器通常會取消fetch請求以確保頁面快速關閉,而sendBeacon是專門為此場景設計的。

實際效果對比

實際測試數據顯示,navigator.sendBeacon()在頁面切換時的數據送達率達到95.8%,而傳統的fetch()方法只有84.9%。在移動端,這個差距更加明顯。由于移動設備上更激進的內存回收機制和應用后臺運行限制,fetch的失敗率更高,而sendBeacon則能保持較好的穩定性。

sendBeaconAPI特別適合處理小型但重要的數據上報:

  • 更高的可靠性:請求進入瀏覽器原生隊列,能夠跨越頁面卸載的窗口
  • 不會阻塞頁面:不會拖慢用戶的導航體驗
  • 使用簡單:不需要復雜的備用方案或龐大的埋點庫

使用限制和注意事項

sendBeacon有兩個主要限制:單次請求大小不能超過64KB,并且多個beacon請求共享這個大小限制。

// 正好64KB,可以正常發送
navigator.sendBeacon('/log', 'A'.repeat(65536));

// 超過限制,會返回false表示失敗
navigator.sendBeacon('/log', 'A'.repeat(65537));

sendBeacon()返回一個布爾值,表示請求是否成功進入隊列。建議總是檢查這個返回值并提供備用方案:

const success = navigator.sendBeacon('/analytics', data);
if (!success) {
// 備用方案:使用fetch或拆分數據
  fetch('/analytics', { 
    method: 'POST', 
    body: data
  });
}

另一個需要注意的限制是sendBeacon不支持自定義請求頭。當發送字符串數據時,瀏覽器會使用默認的text/plain Content-Type,服務器端需要相應處理。

如果需要發送JSON數據,可以使用Blob對象,但這會觸發CORS預檢請求:

const data = { event: 'click', count: 42 };
const blob = new Blob([JSON.stringify(data)], { 
type: 'application/json'
});

navigator.sendBeacon('/analytics', blob);
// 注意:這會觸發CORS預檢請求

大多數團隊選擇在服務器端解析text/plain內容,以避免額外的預檢請求開銷。

更多應用場景

除了頁面退出埋點,sendBeacon還非常適合實時錯誤上報:

window.addEventListener('error', (event) => {
const errorData = {
message: event.message,
filename: event.filename,
line: event.lineno,
stack: event.error?.stack,
timestamp: Date.now()
  };

  navigator.sendBeacon('/errors', JSON.stringify(errorData));
});

對于用戶交互追蹤,sendBeacon也是很好的選擇:

document.addEventListener('click', (event) => {
const clickData = {
element: event.target.tagName,
x: event.clientX,
y: event.clientY,
timestamp: Date.now()
  };

  navigator.sendBeacon('/interactions', JSON.stringify(clickData));
});

現代替代方案:fetch with keepalive

近年來,另一種解決方案變得越來越流行:使用fetch的keepalive選項。

fetch('/analytics', {
method: 'POST',
body: JSON.stringify(data),
keepalive: true,
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer token'
  }
});

這種方式既保持了Beacon在頁面卸載期的可靠性,又保留了fetch的靈活性,包括自定義請求頭、豐富的HTTP方法和對響應的處理能力。到2025年,主流瀏覽器都對keepalive提供了很好的支持。

如何選擇

選擇navigator.sendBeacon()當:

  • 需要輕量級的埋點或日志記錄
  • 處理頁面退出或會話結束時的數據
  • 進行錯誤上報和診斷
  • 追求最大兼容性和最簡單實現

選擇fetch({ keepalive: true })當:

  • 需要自定義請求頭或認證信息
  • 需要處理服務器響應或復雜HTTP配置
  • 需要更通用的請求能力

瀏覽器兼容性

sendBeaconAPI在現代瀏覽器中已有很好的支持,覆蓋約92%的用戶:

  • Chrome 39+
  • Firefox 31+
  • Safari 11.1+
  • Edge 14+

Internet Explorer不支持此API,但在2025年這已經不再是主要問題。為了最大程度的兼容性,可以添加特性檢測和備用方案:

if (navigator.sendBeacon) {
  navigator.sendBeacon('/log', data);
} else {
// 回退到XMLHttpRequest
const xhr = new XMLHttpRequest();
  xhr.open('POST', '/log', false);
  xhr.send(data);
}

總結

navigator.sendBeacon()和fetch with keepalive徹底解決了頁面關閉時數據丟失的問題。無論是用戶快速關閉頁面還是跳轉到其他網站,重要的數據都能可靠地送達服務器。

對于需要準確收集用戶行為數據的應用來說,正確使用這些API是確保數據完整性的關鍵。

責任編輯:龐桂玉 來源: web前端開發
相關推薦

2025-07-21 06:10:00

瀏覽器HTTPJavaScript

2011-08-24 15:14:12

fetch中文man

2022-07-14 15:29:26

數據庫實踐

2015-08-20 10:34:29

數據丟失數據中心安全谷歌

2023-04-26 08:18:48

FormPrompt表單更改

2023-10-13 07:25:50

2010-08-18 11:11:36

路由器報文

2025-05-09 08:40:42

插件頁面Vite

2014-12-11 09:33:55

2022-12-20 07:49:48

數據庫TypeDB傳統關系型

2023-05-25 08:24:46

Kafka大數據

2009-04-14 16:26:56

路由器丟失數據

2022-06-27 17:40:14

大數據數據科學

2010-03-03 15:16:17

2024-06-26 12:56:06

2025-11-05 08:00:00

過時數據

2025-03-25 08:20:00

Linux虛擬內存系統

2025-03-25 01:00:00

2011-07-18 09:36:42

Mysql數據庫root@localh

2010-10-29 13:55:48

Oracle日志文件
點贊
收藏

51CTO技術棧公眾號

黄瓜视频免费观看在线观看www| 日本国产一区二区三区| 自拍一级黄色片| av有码在线观看| 久久久久久亚洲综合| 91久久精品视频| 国产69精品久久久久久久久久| 午夜国产福利一区二区| 免费成人直播| 亚洲女人的天堂| 欧美三级网色| 亚洲国产中文字幕在线| 三级久久三级久久久| 欧美刺激性大交免费视频| 国产人妻人伦精品1国产丝袜| xxxxx.日韩| 婷婷久久综合九色综合伊人色| 亚洲国产一区二区三区在线| 欧美在线 | 亚洲| 久久精品国产色蜜蜜麻豆| 午夜精品久久久久久99热软件| 亚洲精品天堂网| 日韩成人av在线资源| 5858s免费视频成人| 日韩精品一区二区三区色欲av| а√天堂资源地址在线下载| 久久青草欧美一区二区三区| 91精品国自产在线观看| 做爰视频毛片视频| 久久精品盗摄| 777午夜精品福利在线观看| 成人免费视频网站入口::| 成人高清av| 国产午夜精品视频| 一女三黑人理论片在线| 北条麻妃一区二区三区在线观看| 337p亚洲精品色噜噜狠狠| 日韩精品无码一区二区三区免费 | 伊人久久男人天堂| 亚洲中文字幕无码av| 日韩一区二区三区在线看| 欧美日韩视频一区二区| 黄色aaa级片| 最新中文字幕在线播放| 无码av免费一区二区三区试看| 日本中文字幕一级片| 超碰在线最新| 亚洲丝袜自拍清纯另类| 色爱区综合激月婷婷| 日本一区二区三区精品视频| 日本福利午夜视频在线| 99国产麻豆精品| 国产九色精品| 五月婷婷伊人网| 91亚洲大成网污www| 精品久久久久久一区| 日韩美女一级视频| 国产亚洲欧美一级| 亚洲免费在线精品一区| 免费高清在线观看| 亚洲精品免费看| av一区二区三区免费观看| 日韩另类在线| 天天色天天爱天天射综合| 国产特级黄色大片| 欧美日韩激情电影| 欧美福利视频导航| 亚洲av无码成人精品区| 久久中文资源| 亚洲欧美日韩网| 日本不卡一区视频| 欧美日韩精品一本二本三本 | 国产午夜精品久久久久久久久| 欧美色女视频| 久久精品免费电影| 久久精品国产亚洲av麻豆色欲| 在线观看视频日韩| 日韩美女免费视频| 亚洲性生活大片| 国产精品一区二区你懂的| 91久久精品www人人做人人爽| 国产1区在线观看| 91亚洲精品久久久蜜桃网站| 亚洲草草视频| 欧美高清另类hdvideosexjaⅴ| 亚洲一二三区在线观看| av动漫免费看| av在线播放一区二区| 欧美精品一区在线观看| 国产精品国产三级国产专业不| 婷婷伊人综合| 51ⅴ精品国产91久久久久久| 国产精品欧美久久| 国产女人爽到高潮a毛片| 波多野结衣中文字幕一区 | 岛国av免费观看| 亚洲人成网www| 精品国产依人香蕉在线精品| 日韩三级视频在线播放| 蜜臀久久99精品久久久画质超高清| 92国产精品视频| 免费一级在线观看播放网址| 自拍av一区二区三区| 日本免费黄视频| 精品视频一区二区三区| 亚洲欧美日韩第一区| 国产黄色片在线免费观看| 久久性天堂网| 黄色99视频| 一色桃子av在线| 欧美在线一二三| av网页在线观看| 伊人情人综合网| 国产精品www色诱视频| 成人毛片在线精品国产| 亚洲视频在线一区观看| 波多野结衣天堂| 五月国产精品| 欧美极品第一页| 国产又粗又大又黄| 国产婷婷色一区二区三区 | 在线一区av| 亚洲高清在线观看| 欧美日韩综合一区二区| 久久99精品国产91久久来源| 日本一区二区三区四区高清视频| 爱啪视频在线观看视频免费| 欧美一卡在线观看| 婷婷久久综合网| 麻豆精品新av中文字幕| 日韩hmxxxx| 伊人久久在线| 亚洲男人的天堂网站| 精品久久免费视频| 高清在线不卡av| www.亚洲成人网| 日韩成人在线看| 午夜视频在线观看一区二区| 日韩美女av在线免费观看| 性欧美videos另类hd| 亚洲免费av观看| 在线视频一二区| 亚洲色图欧美| 亚洲自拍偷拍色片视频| 91麻豆一二三四在线| 日韩欧美资源站| 欧美日韩在线国产| 成人免费视频免费观看| 波多野结衣av一区二区全免费观看 | 不卡的在线视频| 欧美电影一区| 亚洲xxxx3d| 日韩三级免费| 亚洲国产中文字幕久久网 | 欧美人狂配大交3d怪物一区| 亚洲色图100p| 狠狠色综合播放一区二区| 自拍偷拍99| 日韩三级av高清片| 久久久在线观看| 天堂v视频永久在线播放| 富二代精品短视频| www.黄色在线| 狠狠色综合色综合网络| 隔壁人妻偷人bd中字| 老汉色老汉首页av亚洲| 国产成人精品视频在线| av在线二区| 欧美一区欧美二区| 中文字幕一区二区三区精品| 久久久一区二区| 久久国产这里只有精品| 欧美成人综合| 久久伦理网站| 九九九精品视频| 欧美疯狂性受xxxxx另类| 四虎精品在线| 欧美福利视频导航| 亚洲综合一二三| 国产精品美女www爽爽爽| 无码人妻少妇色欲av一区二区| 亚洲青涩在线| 亚洲一区二三| 国产精品乱战久久久| 国产国产精品人在线视| 亚洲wwwww| 成人av资源网址| 欧美老肥婆性猛交视频| 青青草视频在线免费观看| 精品视频色一区| 日本一二三区视频| 国产精品你懂的在线欣赏| 肉丝美足丝袜一区二区三区四| 亚欧成人精品| 日韩精品福利片午夜免费观看| 日韩精品免费一区二区夜夜嗨 | 91精品国产777在线观看| 国产毛片在线| 精品久久五月天| 亚洲视频在线观看免费视频| 亚洲不卡一区二区三区| 日韩精品一区二区三区在线视频| a级高清视频欧美日韩| 182午夜在线观看| 国产精品日韩欧美一区| 久久久成人精品一区二区三区| 亚洲自拍电影| 国产伦理久久久| 国产精品高清一区二区| 国产精品成av人在线视午夜片| 2018av在线| 久久影院模特热| www.亚洲资源| 日韩av在线网页| 不卡av中文字幕| 欧美精品亚洲一区二区在线播放| 五月天婷婷激情| 无码av中文一区二区三区桃花岛| 老妇女50岁三级| 中文字幕在线播放不卡一区| 欧美黄色激情视频| 久久只精品国产| 中文视频在线观看| 国产成人自拍网| 免费黄频在线观看| 久久综合综合久久综合| 免费黄色一级网站| 视频在线在亚洲| 蜜臀av午夜一区二区三区| 99视频+国产日韩欧美| 国产在线xxxx| 欧美黄在线观看| 麻豆映画在线观看| 欧美1区3d| 老司机午夜免费福利视频| 91影院成人| 在线视频不卡一区二区| 高清日韩av电影| 久久久国产一区二区三区四区小说 | 国产私拍福利精品视频二区| 欧美综合在线观看| 色网在线免费观看| 日本久久91av| 久久毛片亚洲| 国产精品白嫩初高中害羞小美女| 国模冰冰炮一区二区| 国产成人亚洲综合91| 日韩成人影音| 国产精品日韩久久久久| 福利视频一区| 成人性生交大片免费观看嘿嘿视频| 国产成人免费| 国产综合久久久久| 精品国产三级| 成人黄视频免费| 欧美精品中文字幕亚洲专区| 精品91免费| 久久av影视| 亚洲蜜桃在线| 欧美在线二区| 9久久9毛片又大又硬又粗| 亚洲一区二区免费看| 丝袜制服一区二区三区| 久久99国产精品久久99| 久久精品无码一区二区三区毛片| 国产a级毛片一区| 第四色在线视频| 国产欧美一区二区精品性色 | 亚洲成人av电影| 国产午夜精品久久久久| 欧美色偷偷大香| 国产美女免费看| 亚洲娇小xxxx欧美娇小| 福利在线播放| 欧美xxxx综合视频| 在线观看特色大片免费视频| 国产精品久久久久久久9999| 日韩成人久久| 欧美日韩国产综合在线| 天天天综合网| 久久久999视频| 久久se精品一区二区| 亚洲成a人片在线www| 国产拍揄自揄精品视频麻豆| 警花观音坐莲激情销魂小说| 密臀av在线| 51精品在线观看| 9.1麻豆精品| 久久久99爱| 亚洲乱码在线| 国产99久久九九精品无码| 久久国产精品一区二区| 99re久久精品国产| 综合欧美亚洲日本| 国产性猛交╳xxx乱大交| 欧美高清激情brazzers| 欧美理论在线观看| 久久99久久99精品中文字幕| 成人自拍视频网| 国产亚洲欧美一区二区三区| 97精品一区| 欧美成人精品欧美一级乱| 国产一区二区三区久久久久久久久| 嫩草视频免费在线观看| 久久久噜噜噜久噜久久综合| 国产一级做a爰片在线看免费| 欧美日韩国产天堂| 欧美日韩伦理片| 久久久久五月天| 亚洲精品一区二区在线播放∴| 久久久久网址| 97成人超碰| 亚洲欧洲一区二区三区在线观看 | 99久久精品日本一区二区免费| 亚洲人成网站777色婷婷| 牛牛精品在线| 亚洲自拍另类欧美丝袜| 久久亚洲精品中文字幕蜜潮电影| 欧洲av无码放荡人妇网站| www.av亚洲| 久草资源在线视频| 91精品欧美综合在线观看最新| 毛片免费在线观看| 91爱视频在线| 欧美美女在线直播| 超碰成人免费在线| 国产sm精品调教视频网站| 无码黑人精品一区二区| 欧美日韩国产精品自在自线| 国产三级在线免费观看| 538国产精品一区二区在线| 老牛影视av一区二区在线观看| 国产在线xxxx| 粉嫩绯色av一区二区在线观看| 欧美成人一区二区三区高清| 欧美日韩国产综合草草| 99青草视频在线播放视| 国产精品久久久久久久一区探花| 亚洲区小说区图片区qvod| 久久9精品区-无套内射无码| 97国产一区二区| 天堂中文字幕在线观看| 亚洲精品久久久一区二区三区| heyzo在线| 久久久99爱| 视频一区视频二区在线观看| 精品一区二区三区蜜桃在线| 在线一区二区三区四区五区| 高清av在线| 91精品中国老女人| 亚洲自拍偷拍网| 在线播放国产视频| 亚洲国产另类av| 日韩美女一级视频| 国产精品高清在线观看| 日韩精品中文字幕第1页| 亚洲va在线va天堂va偷拍| 亚洲警察之高压线| 亚洲一区国产精品| 最新国产精品久久久| 亚洲熟妇一区二区| 精品久久久一区| 99re在线视频| 97se国产在线视频| 国产日韩欧美三级| 少妇的滋味中文字幕bd| 337p亚洲精品色噜噜狠狠| 2019中文字幕在线电影免费| 欧美极品色图| 久久成人免费网站| 久久久国产成人| 亚洲欧美日韩高清| 国产一区二区av在线| 三上悠亚久久精品| 国产欧美一区二区在线| 国产成人精品毛片| 57pao国产成人免费| 97久久夜色精品国产| 精品视频站长推荐| 欧美视频一区二区在线观看| 色呦呦在线播放| 清纯唯美一区二区三区| 韩国毛片一区二区三区| 啦啦啦免费高清视频在线观看| 深夜精品寂寞黄网站在线观看| 成人av动漫| 成人性生交免费看| 午夜电影一区二区| 免费黄色在线| 久久艳妇乳肉豪妇荡乳av| 国产资源在线一区| 99精品人妻国产毛片| 欧美巨大黑人极品精男| 国产探花一区| av av在线| 777午夜精品免费视频| 婷婷电影在线观看| 欧美激情亚洲天堂| 国产精品美女视频| 偷拍自拍在线|