JavaScript kodo skaidymas: išsami dinaminio įkėlimo ir našumo optimizavimo analizė | MLOG | MLOG ); }

Šiame scenarijuje kodas `HeavyModal` yra prašomas iš serverio tik pirmą kartą, kai vartotojas paspaudžia mygtuką „Rodyti sąlygas ir nuostatas“.

3. Trečiųjų šalių bibliotekų skaidymas (Vendor Chunks)

Jūsų programos kodas dažnai priklauso nuo trečiųjų šalių bibliotekų iš `node_modules` (pvz., React, Lodash, D3.js, Moment.js). Šios bibliotekos keičiasi daug rečiau nei jūsų pačių programos kodas. Išskyrę jas į atskirą „tiekėjo“ (vendor) dalį, galite pasinaudoti ilgalaikiu naršyklės podėliu (caching).

Kai įdiegiate savo programos kodo pakeitimą, vartotojui tereikia atsisiųsti mažą, pakeistą programos dalį. Daug didesnė tiekėjo dalis gali būti pateikta tiesiai iš naršyklės podėlio, o tai lemia žaibiškus vėlesnius puslapių įkėlimus.

Šiuolaikiniai paketų kūrimo įrankiai, tokie kaip Webpack (su jo `SplitChunksPlugin`) ir Vite, yra neįtikėtinai protingi šiuo klausimu. Jie dažnai gali automatiškai sukurti tiekėjų dalis, atsižvelgiant į modulių naudojimą ir dydį, reikalaujant minimalios konfigūracijos.

Webpack `splitChunks` konfigūracijos pavyzdys:


// webpack.config.js
module.exports = {
  // ... kitos konfigūracijos
  optimization: {
    splitChunks: {
      cacheGroups: {
        vendor: {
          test: /[/]node_modules[/]/,
          name: 'vendors',
          chunks: 'all',
        },
      },
    },
  },
};

Našumo optimizavimo nauda: poveikio matavimas

Kodo skaidymo įgyvendinimas nėra tik teorinis pratimas; jis duoda apčiuopiamą, išmatuojamą našumo naudą, kuri tiesiogiai gerina vartotojo patirtį ir jūsų pagrindinius interneto rodiklius.

Pažangios technikos ir gerosios praktikos

Įvaldę pagrindus, galite toliau tobulinti savo įkėlimo strategiją naudodami pažangesnes technikas.

Išankstinis gavimas (Prefetching) ir išankstinis įkėlimas (Preloading)

Dinaminis įkėlimas yra puikus, tačiau jis sukelia nedidelį vėlavimą, kai vartotojas sukelia veiksmą, nes naršyklė turi gauti naują dalį. Mes galime tai sušvelninti naudodami išteklių užuominas:

Paketų kūrimo įrankiai, pvz., Webpack, leidžia tai lengvai padaryti naudojant „magiškus komentarus“:


// Iš anksto gauti prietaisų skydelio kodą, kai šis modulis yra įvertinamas
const DashboardPage = lazy(() => 
  import(/* webpackPrefetch: true */ './pages/DashboardPage')
);

Skaidymo taškų nustatymas naudojant paketų analizatorius

Kaip žinoti, skaidyti? Nespėliokite – analizuokite! Įrankiai, tokie kaip `webpack-bundle-analyzer` ar `source-map-explorer`, sugeneruoja interaktyvią jūsų paketų medžio struktūros vizualizaciją. Tai leidžia iš karto nustatyti didžiausius modulius ir bibliotekas, kurios yra pagrindiniai kandidatai skaidymui.

Tinklo krioklių vengimas

Būkite atidūs, kad nesukurtumėte dinaminio importavimo grandinių, kur viena dalis turi būti įkelta, prieš pradedant įkelti kitą. Kai tik įmanoma, inicijuokite kelių būtinų dalių įkėlimą lygiagrečiai, kad sumažintumėte bendrą įkėlimo laiką.

Išvada: kodo skaidymas yra būtinas

Siekiant optimalaus interneto našumo, kodo skaidymas iš nišinės optimizacijos evoliucionavo į standartinę, būtiną praktiką bet kuriai netrivialiai interneto programai. Pereidami nuo monolitinės prie pagal pareikalavimą įkeliamos strategijos, jūs gerbiate savo vartotojo laiką, duomenis ir įrenginio išteklius.

Nauda yra aiški ir įtikinama:

Su šiuolaikiniais įrankiais ir karkasų palaikymu, maršrutais ir komponentais pagrįsto skaidymo įgyvendinimas niekada nebuvo lengvesnis. Laikas veikti dabar. Išanalizuokite savo paketą, nustatykite didžiausias priklausomybes ir rečiausiai naudojamus maršrutus bei įgyvendinkite savo pirmąjį skaidymo tašką. Jūsų vartotojai – ir jūsų našumo rodikliai – jums už tai padėkos.