Geri qayıt
Linear niyə bu qədər sürətlidir: texniki təhlil
SiTech AI Team3 წთ. საკითხავი

Linear niyə bu qədər sürətlidir: texniki təhlil

Texniki təhlil izah edir ki, Linear interfeys yeniləmələrini millisaniyə səviyyəsində necə saxlayır: verilənlər bazası brauzerdə yaşayır, dəyişikliklər yerli olaraq tətbiq olunur.

Linear-da tapşırığı yeniləmək bir neçə millisaniyə çəkir, halbuki ənənəvi CRUD tətbiqi eyni əməliyyata təxminən 300 ms sərf edir. performance.dev-də dərc olunan texniki təhlil bu hissin arxasındakı üsulları izah edir və gizli "gümüş güllə" olmadığını vurğulayır. Müəllif bildirir ki, heç vaxt Linear-da işləməyib və onun kodunu görməyib.

Brauzerdəki verilənlər bazası

Əksər veb tətbiqlər eyni dövrədə işləyir: istifadəçi klikləyir, brauzer HTTP sorğusu göndərir, server verilənlər bazasını sorğulayır və interfeys bir neçə yüz millisaniyə spinner arxasında gözləyir. Linear bunu tərsinə çevirir: interfeysin oxuduğu verilənlər bazası brauzerdə, IndexedDB-də yaşayır — dəyişikliklər əvvəlcə yerli olaraq tətbiq olunur, sonra asinxron şəkildə serverə göndərilir; server isə deltaları WebSocket vasitəsilə digər müştərilərə yayımlayır.

Təcrübədə dəyişiklik iki sətirdir: issue.title = "Faster app launch" yaddaşdakı anbarı (MobX müşahidə olunanları) yeniləyir, issue.save() isə sinxronizasiya mühərrikinin qruplaşdırıb göndərdiyi əməliyyatı növbəyə qoyur. İnterfeys yerli vəziyyətdən sinxron şəkildə yenidən çəkilir, yəni gözləniləcək heç nə yoxdur. Linear-ın həmtəsisçisi Tuomas 2024-cü ildə konfransda yazdığı "ilk kod sətirlərinin" məhz sinxronizasiya mühərriki olduğunu söyləyib. Əksər komandalara xüsusi mühərrik lazım deyil: TanStack Query və ya SWR optimist yeniləmələrlə kifayət qədər yaxın nəticə verir.

İlk yükləmənin ani görünməsi

Sürət hələ build mərhələsində başlayır. Linear öz qurma zəncirini dörd dəfə yenidən yazıb — Parcel, Rollup, Vite, Rolldown — hər dəfə daha az JavaScript və CSS göndərmək üçün. Şirkətin məlumatlarına görə: 50% az kod, sıxılmadan sonra 30% kiçik həcm, soyuq keşlə səhifə yükləməsi 10-30% sürətli, Safari-də aktiv tapşırıqlar görünüşünün ilk boyanma vaxtı 59% azalıb, yaddaş istifadəsi isə 70-80% düşüb. Bunun çoxu köhnə brauzerlərdən imtina, daha yaxşı ölü kod təmizləmə və aqressiv kod bölmədən gəlib.

Buna baxmayaraq Linear hələ də təxminən 21 MB minifikasiya edilmiş JavaScript göndərir — tələb əsasında yüklənən yüzlərlə marşrut səviyyəli hissəyə bölünmüş halda. İmport şəlaləsinin qarşısını almaq üçün onun HTML-i modulepreload işarələrini elan edir; beləliklə brauzer bütün sorğuları JavaScript işləməzdən əvvəl paralel göndərir.

Animasiya və son detallar

Animasiya son qatdır. Linear-ın üslub faylında müddətlər qısadır: sürətli keçidlər üçün 0,1 saniyə, adi üçün 0,25, yavaş üçün 0,35, vurğunun solması isə 0,15 saniyə — Material-ın 200 ms və iOS-un təxminən 350 ms yayından xeyli aşağı. Giriş və çıxış asimmetrikdir: vurğular, popover-lər və agent paneli dərhal görünür və 150 ms-də sönür. Hərəkət adətən mənbəyə işarə edir — məsələn, status popover-i status nişanından açılır.

Gümüş güllə yoxdur

Təhlilin nəticəsi budur: heç bir tək qərar tətbiqi sürətli etmir. Linear-ın modeli belədir: server həqiqətin mənbəyi deyil, sinxronizasiya hədəfidir; verilənlər bazası brauzerdə yaşayır; dəyişikliklər fonda uzlaşdırılır və ilk yükləmə daha az kodu daha çox hissə ilə göndərir. Müəllifin sözlərinə görə çətin olan tətbiq deyil, kod bazası böyüyüb yeni məhdudiyyətlərlə üzləşərkən sənətə illərlə sadiq qalmaqdır.

SSiTech

SiTech — AI ilə gücləndirilmiş veb hazırlanması

Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.