22693 bayttan 15986 bayta: tek dedektör payload boyutu

Bütün kapılar yeşilken gövdelerin teslim edilmediğini yalnız bayt sayısı söyledi.

Object.create(null) ile kurulan bir prop React'in Flight sınırında fırlıyor, ve bu kusur kapıların hepsinden geçti: pnpm -r build yeşil, süit yeşil, HTTP yanıtı 200. Tek gözlenebilir fark payload boyutuydu, 22693 bayttan 15986 bayta; yani gövdeler hiç teslim edilmiyordu. Üç kapının üçünün de neden kör olduğu ayrı ayrı söylenebilir: vitest istemci React'iyle render ettiği için Flight hiç devrede değil, rota dinamik olduğu için next build o ağacı hiç serileştirmiyor, ve hata Suspense sınırının arkasına düştüğü için kabuk çoktan flush olmuş ve durum satırı yazılmış oluyor. Kökü de küçüktü, kontrol anahtarlara değil prototipe bakıyordu ve proje listesi boşken bile fırlıyordu; Object.fromEntries ile kapandı.

Probun kendi öğrendiği şey

Bu sınıf için deterministik bir kapı yok, elle koşulan bir prob var, ve probun kendisi bir şey öğrenmek zorunda kaldı: payload boyutu kod ile içeriğin saf bir fonksiyonu değil. Aynı build, aynı içerik, aynı arayüz; fetch önbelleği soğukken 45821 bayt, ısınmışken 44369. Aradaki 1452 bayt yalnızca bir Suspense sınırının kabuk flush'ından önce mi sonra mı çözüldüğünden geliyor. Soğuk rejimde iki arayüz arasındaki fark bir koşuda 42 bayt, başka bir koşuda 1 bayt çıktı, ikisi de doğru ve ikisi de o rejimin bayt kararlı olmadığının kanıtı. Prob bu yüzden üç sütun basıyor, soğuk, ısınmış ve tekrar; iddianın dayandığı sütun tekrar sütunu, çünkü bir koşuda iki arayüzün tam 1 bayt ayrıştığı iddiası ısınmış sütunda eksi 371, tekrar sütununda artı 1 verdi. Tek bir ısıtma isteği her zaman yetmiyor.

Etiketler

  • React
  • Testing
22693 bayttan 15986 bayta: tek dedektör payload boyutu · Deniz Barış Yıldırım, Portfolyo OS