İndirme boyutu
| Boyut | |
|---|---|
| Küçültülmüş | 105,5 KB |
| gzip | 36,3 KB |
| brotli | 31,9 KB |
| Bütçe (gzip) | 45 KB |
Bu, betik etiketi kodunun yüklediği ar.min.js dosyası; kayıt motoru (rrweb) içinde. gzip’li dosya bütçeyi aşarsa derleme başarısız olur; böylece bir bağımlılık güncellemesi her müşterinin sitesini sessizce ağırlaştıramaz. Oturumları oynatan oynatıcı içinde değildir; onu yalnızca panel yükler.
Nasıl yüklenir
- Kod küçük bir kuyruk tanımlar ve betiği
asyncile ekler; tarayıcı dosya inerken sayfayı ayrıştırmayı ve çizmeyi sürdürür. Dosya gelmeden yapılan çağrılar —init,identify,track— kuyrukta bekler ve sırayla çalışır. requireConsentile kaydedici onay verilene kadar hiçbir şey kaydetmez, saklamaz, göndermez.sampleRateile örneklemeye girmeyen bir ziyaretçi hiç kaydedilmez.- Kaydedicinin yaptığı hiçbir şey sayfanıza hata fırlatamaz: hataları yakalanır ve
debug: trueile konsola yazılır.
Ana iş parçacığında ne yapar
- Sayfa başına bir kez: anlık görüntü. Kayıt başlarken sayfayı bir kez okur ve okunabilen stil sayfalarını metin olarak alıp serileştirir. Bu en büyük tek iştir ve sayfa büyüdükçe büyür.
- Ziyaretçi sayfadayken: değişiklikler. Bir
MutationObserverve olay dinleyicileri neyin değiştiğini — öğeler, metin, kaydırma, tıklamalar, cihazda maskelenen form girdisi — sayfayı yeniden okumadan not eder. - 5 saniyede bir: gönderim. Değişiklikler toplanıp
fetchile gönderilir; sekme gizlenir ya da kapanırsa kalankeepaliveya dasendBeaconile gider. Paketler JSON’dur ve kaydedici tarafından sıkıştırılmaz. - Hiç yapılmayanlar: canvas kaydı, yazı tipi toplama, ekran görüntüsü ya da video.
Chrome’da ölçüldü
Bir mağaza sayfasını — ürün kartları, bir form, bir stil sayfası — Chrome 156.0.8078.47 ile bir kez kaydedicisiz, bir kez müşterilerin yapıştırdığı kodun aynısıyla, her biri 5 kez yükledik ve Chrome’un kendisinin bildirdiği ana iş parçacığı süresindeki farkın ortancasını aldık. Sonra aynısını işlemciyi dört kat yavaşlatarak, Chrome’un orta segment telefon karşılığıyla yaptık. Veri alımı yerel bir taklitti; ağ bu sayılara dahil değil.
| Tipik sayfa, 921 öğe | Ağır sayfa, 2.721 öğe | |
|---|---|---|
| Yükleme sırasında eklenen ana iş parçacığı süresi | 19 ms | 23 ms |
| … işlemci 4× yavaşken | 75 ms | 107 ms |
| En uzun tek görev, 4× yavaş işlemci | 50 ms’yi aşan yok | 65 ms |
| Etkinliğin her saniyesinde eklenen ana iş parçacığı süresi | 7,7 ms | 4,4 ms |
| … işlemci 4× yavaşken | 13,1 ms | 12,9 ms |
| Etkinlik sırasında uzun görevler, 4× yavaş işlemci | 0 | 0 |
| En büyük yükleme (anlık görüntü, sıkıştırılmamış) | 165 KB | 491 KB |
“Etkinlik”, sayfanın saniyede on kez yirmi öğeyi değiştirip kaydırdığı 10 saniyedir — çoğu ziyaretten yoğun. Chrome 50 ms ve üzeri görevi uzun sayar, çünkü sayfa o sırada bir dokunuşa yanıt veremez. Ölçüm makinesi: Apple M4.
Bilmeye değer sınırlar
Anlık görüntüsü 512 KB’tan büyük bir sayfa kaydedilmez: kaydedici o sayfa için durur ve debug: true ile konsola snapshot_too_large yazar. Test sayfamızda bu 3.000 öğenin biraz üzerinde oluyor. Bkz. kısa kesilen oturumlar.
- Anlık görüntünün maliyeti sayfayla büyür. Ağır sayfada ve yavaş işlemcide uzun bir görev olabilir; o zaman
sampleRate’i ya da kimsenin görmesi gerekmeyen büyük bir bileşen içinar-block’u düşünün. - Bunlar tek bir makineden laboratuvar sayılarıdır. Sizin sayfanız, ziyaretçilerinizin cihazları ve sayfadaki diğer betikler onları her iki yönde de değiştirir.