Prasības: Izstrādātais produkts nevar garantēt, ka nav kļūdu, pat ja testēšanas posmā nav problēmu, kas izvietotas ražošanas vidē, lietotājiem var rasties negaidītas situācijas, un tas pats attiecas uz priekšgala lapām. Sentry un Bugsnag abi ir ļoti labi uzraudzības produkti.
Pārskats
Kā pēc anomālijas informācijas uzraudzības iesniegt datus aizmugures API? Navigator.sendBeacon ir API neliela apjoma datu nosūtīšanai uz serveri, it īpaši, ja lapa tiks izkrauta, piemēram, reģistrēšana, lietotāju uzvedības analīze utt.
Ja datu nosūtīšanai izmantojat tradicionālo XHR, jums ir jāveic īpaša loģiskā apstrāde izsekošanas saskarnē priekšgalā. navigator.sendBeacon() metodeNometiet ziņojumu pārlūkprogrammas rindā, lai pat tad, ja sūtīšana neizdodas, tā kļūdas ziņojumu neuztvertu frontend。
Ieviests Navigator.sendBeacon
Navigator.sendBeacon() metode asinhroni nosūta HTTP POST pieprasījumu ar nelielu datu apjomu uz tīmekļa serveri. Parametri: url, dati (ArrayBuffer, ArrayBufferView, Blob, DOMString, FormData vai URLSearchParams tipa dati)
Dokumentācija:
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
Lietošanas scenāriji
Reģistrēšana, kad lapa ir atinstalēta: ieraksta uzvedības datus, piemēram, lapas uzturēšanās laiku, klikšķu uzvedību, PV, UV utt., kad lietotājs atstāj lapu. Analīze un uzraudzība: lietotāju uzvedības datu nosūtīšana uz analītikas serveriem tīmekļa vietnes veiktspējas uzraudzībai un lietotāju uzvedības analīzei. Statusa uzskaite: ziņo serverim par lietojumprogrammas statusu vai kļūdu informāciju.
Tests
Kods ir šāds:
Kādas ir līdzības un atšķirības starp Navigator.sendBeacon un XHR un fetch?
Līdzības
Tīkla pieprasījumu sūtīšana: Visas trīs metodes tiek izmantotas, lai nosūtītu datus no klienta uz serveri. Atbalsts vairākiem datu formātiem: Tie var nosūtīt datus dažādos formātos, piemēram, virknēs, JSON, binārajos datos utt.
Atšķirības
Navigator.sendBeacon
To izmanto, lai nosūtītu nelielu datu daudzumu, kad lapa ir atinstalēta, un tas ir piemērots reģistrēšanai, datu analīzei utt. Datu sūtīšana ir asinhrona, taču zvanītājam tā neatgriež nekādu informāciju un nevar apstrādāt servera atbildi. Izstrādāts, lai garantētu datu piegādi, kad lapa tiek atinstalēta, pat ja pārlūkprogramma ir aizvērta vai lapa tiek lēkta. Vienmēr izmantojiet HTTPPOST pieprasījumus. Nav nepieciešams apstrādāt atbildes, vienkārši lietojamas.
XMLHttpPieprasījums
Sarežģītākiem AJAX pieprasījumiem, kuriem nepieciešama atbilžu apstrāde. Var veikt sinhronus vai asinhronus pieprasījumus. Jūs varat apstrādāt servera atbildi un veikt tālāku apstrādi (piemēram, parsēt JSON, apstrādāt statusa kodus utt.). Nodrošina bagātīgus notikumus, piemēram, onload, onerror, onprogress utt., lai uzraudzītu dažādus pieprasījuma posmus. Plaši atbalstīts visās lielākajās pārlūkprogrammās, tostarp dažās vecākās pārlūkprogrammās. Tas ir sarežģītāk lietojams, un tam ir jāapstrādā dažādi pieprasījuma posmi un stāvokļi.
Atnest
Mūsdienīgs pieprasījumu interfeiss, lai aizstātu XMLHttpRequest vienkāršākai un elastīgākai pieprasījumu un atbilžu apstrādei. Vienmēr veiciet asinhronu pieprasījumu, atgriežot solījuma objektu. Tas atbalsta ķēdes apstrādes atbildes, padarot viegli parsēt JSON, apstrādāt statusa kodus un daudz ko citu. Atbalsta asinhronu / gaidīšanas sintaksi, kas vairāk atbilst mūsdienu JavaScript izstrādes paradumiem. Labāks atbalsts starpdomēnu pieprasījumiem un CORS (Cross-Domain Resource Sharing). Ļauj pieprasījumam pievienot papildu opcijas (piemēram, pielāgota galvene, pieprasījuma metode utt.).
Kopsavilkuma
Navigator.sendBeacon ir API, kas paredzēta uzticamībai, īpaši neliela datu apjoma nosūtīšanai, kad lapa ir atinstalēta. Tam ir vienkāršības, nebloķēšanas un uzticamības priekšrocības, un tas ir īpaši piemērots tādiem scenārijiem kā reģistrēšana un lietotāju uzvedības analīze. Tiek veikts asinhrons pieprasījums, un tas ir POST pieprasījums. Tas var tikai noteikt, vai tas ir ievietots pārlūkprogrammas uzdevumu rindā, bet nevar noteikt, vai tas ir veiksmīgi nosūtīts. Nav nepieciešams risināt atgriešanās vērtību. Ir jāatzīmē pārlūkprogrammas saderības problēmas. |