- Spegnimento
- 26 agosto 2026 alle ore 00:52 UTC
- Autore
- kamo
- Impegno
- 0a36119
Batch 1 dell'audit delle prestazioni lato cliente. Ogni cambiamento è il mantenimento del comportamento; nulla che un membro può vedere o fare è diverso dopo. I18nProviders ha importato quattro barili locali con `import * come` e indicizzato da un chiave runtime. Un namespace letto da una chiave calcolata è intree-shakeable dalla costruzione, così tutti i 236 oggetti locali spediti quando l'app mappa 74. Misurato con esbuild contro i moduli di importazione esatti: 1.283 KB -> 421 KB minificati, 216 KB -> 77 KB gzip. Quel bastardo. è su 143 di 143 percorsi di pagina, quindi è stato il lavoro di parse-and-execute prima di idratazione su ogni pagina carica. Tutte le 88 mappature locali (22 locali x 4 mappe) verificate per risolvere l'esportazione identica come prima. crearePhoneSdk staticamente importato tutti e tre gli adattatori, quindi sip.js AND ringcentral-web-phone ha raggiunto ogni membro su ogni percorso — compresi org senza provider di telefonia e membri del team, che non hanno bisogno di nessuno. I moduli dell'adattatore sono ora raggiunto attraverso `await import()`, motivo per cui la fabbrica è asincense; il suo unico chiamante era già un richiamo asincastro. TeamsAcsPhoneSdk già differito il Azure SDK questo modo, quindi questo estende un modello stabilito piuttosto che inventarne uno. useFormatters ha costruito due oggetti Intl.DateTimeFormat su ogni chiamata `custom()` e una Intl fresco. NumberFormat su ogni numero/percentuale/valuta chiamata. Su una griglia con due date colonne su ~25 righe che sono 50 costruzioni per ordine, filtro o rotolo rinfrescano. Ora servito da una cache a livello di processo: 2.028 confronti in 12 locali, 5 zone e 8 forme di opzione producono output byte-identical, e 20.000 formati sono andati 12,720ms -> 308ms. MeetingDialog (@mui/x-date-pickers' DateTimePicker) e l'editor Lexical sono state entrambe le importazioni statiche nel guscio sempre montato per superfici che iniziano chiuse. Entrambi sono deferiti ora. L'editor è differito a FloatingNote piuttosto che a FloatingNoteLayer di proposito — lazifying lo strato crollerebbe AnimatePresence's monitoraggio del bambino e silenziosamente cadere l'animazione vicina del sticky — e FloatingNoteLayer scalda il pezzo su inattivo in modo che il primo aperto rimanga istantaneo piuttosto che diventare un fetch. NavLayout, SettingsAppPins e FloatingNotes hanno ottenuto l'intero membro ii-preferenze documento per se stessi, anche se un lettore di carbonizzazione per esattamente che endpoint esisteva già nella stessa base di codice. Tutti e tre ora lo condividono, e le loro scritture passare attraverso lo scrittore condiviso in modo che la mappa cache non può andare stallo. Aggiunge una corrispondenza deleteMemberUiPreference for NavLayout's reset path, che altrimenti avrebbe lasciato un chiave eliminata nella cache. la costruzione del browser di blake3 è ora importata pigramente. E' stato trascinato da qualcosa che importava MAX UPLOAD BYTES o formatFileSize dallo stesso modulo, così il suo WASM è stato catturato e compilato durante la prima vernice per una funzione che funziona solo dopo un raccoglitore di file. next.config: productionBrowserSourceMaps defaults off (opt back in for a debugging costruire con KAMO BROWSER SOURCEMAPS=true). E 'stato emettere 349 file di mappa, 103.7 MB, tutti contenente sorgentiContent — il TypeScript originale completo di questa applicazione, servito da / next/statico a chiunque possa raggiungere l'host. Anche scende il blocco `env` morto: KAMO OAUTH2 CLIENT PASSWORD ha zero riferimenti nella sorgente e appare in zero client pezzi, quindi niente era fuoriuscire, ma il blocco è un invito in piedi a inline segreto nel momento in cui un componente cliente lo legge. Deliberatamente NON fatto: impostare `compresso: falso` per lasciare che i brotli di Traefik prendano il sopravvento. Traefik's compress middleware consentono-lists tipi di contenuti e l'elenco omette applicazione/javascript e applicazione/json, che è esattamente ciò che Next serve JS e I corpi API come — in modo da disabilitare il gzip di Next spedirebbero ogni chunk e ogni risposta API Non compresso. Questo ha bisogno della lista dei permessi ampliata in KlusterServices prima, come la sua cambiamento a livello di piattaforma. Verificato: tsc --noEmit clean; i 7 script di guardia non correlati al passaggio di lavoro in volo; vitest 3,089 test pass (la suite è timeout-flaky sotto carico concurrent — il fallimento set differito per corsa e tutto ri-ran verde in isolamento).