ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಕೋಡ್ ಸ್ಪ್ಲಿಟ್ಟಿಂಗ್: ಡೈನಾಮಿಕ್ ಲೋಡಿಂಗ್ ಮತ್ತು ಪರ್ಫಾರ್ಮೆನ್ಸ್ ಆಪ್ಟಿಮೈಸೇಶನ್‌ನ ಆಳವಾದ ನೋಟ | MLOG | MLOG ); }

ಈ ಸನ್ನಿವೇಶದಲ್ಲಿ, `HeavyModal` ಗಾಗಿ ಕೋಡ್ ಅನ್ನು ಬಳಕೆದಾರರು "Show Terms and Conditions" ಬಟನ್ ಅನ್ನು ಮೊದಲ ಬಾರಿಗೆ ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ಮಾತ್ರ ಸರ್ವರ್‌ನಿಂದ ವಿನಂತಿಸಲಾಗುತ್ತದೆ.

3. ಥರ್ಡ್-ಪಾರ್ಟಿ ಲೈಬ್ರರಿಗಳನ್ನು ವಿಭಜಿಸುವುದು (ವೆಂಡರ್ ಚಂಕ್ಸ್)

ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ನ ಕೋಡ್ ಸಾಮಾನ್ಯವಾಗಿ `node_modules` ನಿಂದ ಬರುವ ಥರ್ಡ್-ಪಾರ್ಟಿ ಲೈಬ್ರರಿಗಳನ್ನು ಅವಲಂಬಿಸಿದೆ (ಉದಾ., React, Lodash, D3.js, Moment.js). ಈ ಲೈಬ್ರರಿಗಳು ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಕೋಡ್‌ಗಿಂತ ಕಡಿಮೆ ಬಾರಿ ಬದಲಾಗುತ್ತವೆ. ಅವುಗಳನ್ನು ಪ್ರತ್ಯೇಕ "ವೆಂಡರ್" ಚಂಕ್‌ಗೆ ವಿಭಜಿಸುವ ಮೂಲಕ, ನೀವು ದೀರ್ಘಾವಧಿಯ ಬ್ರೌಸರ್ ಕ್ಯಾಶಿಂಗ್‌ನ ಪ್ರಯೋಜನವನ್ನು ಪಡೆಯಬಹುದು.

ನೀವು ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಕೋಡ್‌ಗೆ ಬದಲಾವಣೆಯನ್ನು ನಿಯೋಜಿಸಿದಾಗ, ಬಳಕೆದಾರರು ಕೇವಲ ಸಣ್ಣ, ಬದಲಾದ ಆಪ್ ಚಂಕ್ ಅನ್ನು ಮಾತ್ರ ಡೌನ್‌ಲೋಡ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಹೆಚ್ಚು ದೊಡ್ಡದಾದ ವೆಂಡರ್ ಚಂಕ್ ಅನ್ನು ನೇರವಾಗಿ ಬ್ರೌಸರ್‌ನ ಕ್ಯಾಶ್‌ನಿಂದ ನೀಡಬಹುದು, ಇದು ಮಿಂಚಿನ ವೇಗದ ನಂತರದ ಪುಟ ಲೋಡ್‌ಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ.

ವೆಬ್‌ಪ್ಯಾಕ್ (ಅದರ `SplitChunksPlugin` ನೊಂದಿಗೆ) ಮತ್ತು ವೈಟ್‌ನಂತಹ ಆಧುನಿಕ ಬಂಡ್ಲರ್‌ಗಳು ಈ ಬಗ್ಗೆ ಅತ್ಯಂತ ಬುದ್ಧಿವಂತವಾಗಿವೆ. ಅವು ಮಾಡ್ಯೂಲ್ ಬಳಕೆ ಮತ್ತು ಗಾತ್ರದ ಆಧಾರದ ಮೇಲೆ ವೆಂಡರ್ ಚಂಕ್‌ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸಬಹುದು, ಇದಕ್ಕೆ ಕನಿಷ್ಠ ಕಾನ್ಫಿಗರೇಶನ್ ಅಗತ್ಯವಿರುತ್ತದೆ.

ವೆಬ್‌ಪ್ಯಾಕ್ `splitChunks` ಕಾನ್ಫಿಗರೇಶನ್ ಉದಾಹರಣೆ:


// webpack.config.js
module.exports = {
  // ... ಇತರೆ ಕಾನ್ಫಿಗರೇಶನ್‌ಗಳು
  optimization: {
    splitChunks: {
      cacheGroups: {
        vendor: {
          test: /[/]node_modules[/]/,
          name: 'vendors',
          chunks: 'all',
        },
      },
    },
  },
};

ಪರ್ಫಾರ್ಮೆನ್ಸ್ ಆಪ್ಟಿಮೈಸೇಶನ್‌ನ ಫಲಿತಾಂಶ: ಪರಿಣಾಮವನ್ನು ಅಳೆಯುವುದು

ಕೋಡ್ ಸ್ಪ್ಲಿಟ್ಟಿಂಗ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದು ಕೇವಲ ಒಂದು ಸೈದ್ಧಾಂತಿಕ ವ್ಯಾಯಾಮವಲ್ಲ; ಇದು ಸ್ಪಷ್ಟವಾದ, ಅಳೆಯಬಹುದಾದ ಕಾರ್ಯಕ್ಷಮತೆಯ ಲಾಭಗಳನ್ನು ನೀಡುತ್ತದೆ, ಇದು ಬಳಕೆದಾರರ ಅನುಭವ ಮತ್ತು ನಿಮ್ಮ ಕೋರ್ ವೆಬ್ ವೈಟಲ್ಸ್ ಅನ್ನು ನೇರವಾಗಿ ಸುಧಾರಿಸುತ್ತದೆ.

ಸುಧಾರಿತ ತಂತ್ರಗಳು ಮತ್ತು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು

ನೀವು ಮೂಲಭೂತ ವಿಷಯಗಳನ್ನು ಕರಗತ ಮಾಡಿಕೊಂಡ ನಂತರ, ಹೆಚ್ಚು ಸುಧಾರಿತ ತಂತ್ರಗಳೊಂದಿಗೆ ನಿಮ್ಮ ಲೋಡಿಂಗ್ ತಂತ್ರವನ್ನು ಮತ್ತಷ್ಟು ಪರಿಷ್ಕರಿಸಬಹುದು.

ಪ್ರಿಫೆಚಿಂಗ್ ಮತ್ತು ಪ್ರಿಲೋಡಿಂಗ್

ಡೈನಾಮಿಕ್ ಲೋಡಿಂಗ್ ಅದ್ಭುತವಾಗಿದೆ, ಆದರೆ ಬಳಕೆದಾರರು ಕ್ರಿಯೆಯನ್ನು ಪ್ರಚೋದಿಸಿದಾಗ ಅದು ಸಣ್ಣ ವಿಳಂಬವನ್ನು ಪರಿಚಯಿಸುತ್ತದೆ, ಏಕೆಂದರೆ ಬ್ರೌಸರ್ ಹೊಸ ಚಂಕ್ ಅನ್ನು ತರಬೇಕಾಗುತ್ತದೆ. ಸಂಪನ್ಮೂಲ ಸುಳಿವುಗಳನ್ನು ಬಳಸಿಕೊಂಡು ನಾವು ಇದನ್ನು ತಗ್ಗಿಸಬಹುದು:

ವೆಬ್‌ಪ್ಯಾಕ್‌ನಂತಹ ಬಂಡ್ಲರ್‌ಗಳು "ಮ್ಯಾಜಿಕ್ ಕಾಮೆಂಟ್‌ಗಳು" ಮೂಲಕ ಇದನ್ನು ಸುಲಭವಾಗಿ ಮಾಡಲು ನಿಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತವೆ:


// ಈ ಮಾಡ್ಯೂಲ್ ಮೌಲ್ಯಮಾಪನಗೊಂಡಾಗ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಕೋಡ್ ಅನ್ನು ಪ್ರಿಫೆಚ್ ಮಾಡಿ
const DashboardPage = lazy(() => 
  import(/* webpackPrefetch: true */ './pages/DashboardPage')
);

ಬಂಡಲ್ ಅನಲೈಜರ್‌ಗಳೊಂದಿಗೆ ಸ್ಪ್ಲಿಟ್ ಪಾಯಿಂಟ್‌ಗಳನ್ನು ಗುರುತಿಸುವುದು

ಏನನ್ನು ಸ್ಪ್ಲಿಟ್ ಮಾಡಬೇಕು ಎಂದು ನಿಮಗೆ ಹೇಗೆ ತಿಳಿಯುತ್ತದೆ? ಊಹಿಸಬೇಡಿ—ವಿಶ್ಲೇಷಿಸಿ! `webpack-bundle-analyzer` ಅಥವಾ `source-map-explorer` ನಂತಹ ಉಪಕರಣಗಳು ನಿಮ್ಮ ಬಂಡಲ್‌ಗಳ ಸಂವಾದಾತ್ಮಕ ಟ್ರೀಮ್ಯಾಪ್ ದೃಶ್ಯೀಕರಣವನ್ನು ರಚಿಸುತ್ತವೆ. ಇದು ವಿಭಜನೆಗೆ ಪ್ರಮುಖ ಅಭ್ಯರ್ಥಿಗಳಾದ ಅತಿದೊಡ್ಡ ಮಾಡ್ಯೂಲ್‌ಗಳು ಮತ್ತು ಲೈಬ್ರರಿಗಳನ್ನು ತಕ್ಷಣವೇ ಗುರುತಿಸಲು ನಿಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.

ನೆಟ್‌ವರ್ಕ್ ವಾಟರ್‌ಫಾಲ್‌ಗಳನ್ನು ತಪ್ಪಿಸುವುದು

ಡೈನಾಮಿಕ್ ಇಂಪೋರ್ಟ್‌ಗಳ ಸರಣಿಗಳನ್ನು ರಚಿಸುವುದರ ಬಗ್ಗೆ ಜಾಗರೂಕರಾಗಿರಿ, ಅಲ್ಲಿ ಒಂದು ಚಂಕ್ ಲೋಡ್ ಆದ ನಂತರವೇ ಇನ್ನೊಂದರ ಲೋಡಿಂಗ್ ಅನ್ನು ಪ್ರಚೋದಿಸಬಹುದು. ಸಾಧ್ಯವಾದಾಗಲೆಲ್ಲಾ, ಒಟ್ಟು ಲೋಡ್ ಸಮಯವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಅಗತ್ಯವಿರುವ ಅನೇಕ ಚಂಕ್‌ಗಳ ಲೋಡಿಂಗ್ ಅನ್ನು ಸಮಾನಾಂತರವಾಗಿ ಪ್ರಚೋದಿಸಿ.

ತೀರ್ಮಾನ: ಕೋಡ್ ಸ್ಪ್ಲಿಟ್ಟಿಂಗ್ ಕಡ್ಡಾಯವಾಗಿದೆ

ಉತ್ತಮ ವೆಬ್ ಕಾರ್ಯಕ್ಷಮತೆಯ ಅನ್ವೇಷಣೆಯಲ್ಲಿ, ಕೋಡ್ ಸ್ಪ್ಲಿಟ್ಟಿಂಗ್ ಒಂದು ವಿಶಿಷ್ಟ ಆಪ್ಟಿಮೈಸೇಶನ್‌ನಿಂದ ಯಾವುದೇ ಗಣನೀಯ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಪ್ರಮಾಣಿತ, ಅತ್ಯಗತ್ಯ ಅಭ್ಯಾಸವಾಗಿ ವಿಕಸನಗೊಂಡಿದೆ. ಏಕಶಿಲೆಯ ಲೋಡಿಂಗ್ ತಂತ್ರದಿಂದ ಆನ್-ಡಿಮಾಂಡ್ ಲೋಡಿಂಗ್ ತಂತ್ರಕ್ಕೆ ಬದಲಾಯಿಸುವ ಮೂಲಕ, ನೀವು ನಿಮ್ಮ ಬಳಕೆದಾರರ ಸಮಯ, ಡೇಟಾ, ಮತ್ತು ಸಾಧನದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಗೌರವಿಸುತ್ತೀರಿ.

ಪ್ರಯೋಜನಗಳು ಸ್ಪಷ್ಟ ಮತ್ತು ಬಲವಾಗಿವೆ:

ಆಧುನಿಕ ಉಪಕರಣಗಳು ಮತ್ತು ಫ್ರೇಮ್‌ವರ್ಕ್ ಬೆಂಬಲದೊಂದಿಗೆ, ರೂಟ್-ಆಧಾರಿತ ಮತ್ತು ಕಾಂಪೊನೆಂಟ್-ಆಧಾರಿತ ಸ್ಪ್ಲಿಟ್ಟಿಂಗ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದು ಎಂದಿಗಿಂತಲೂ ಸುಲಭವಾಗಿದೆ. ಕಾರ್ಯಪ್ರವೃತ್ತರಾಗಲು ಇದು ಸಕಾಲ. ನಿಮ್ಮ ಬಂಡಲ್ ಅನ್ನು ವಿಶ್ಲೇಷಿಸಿ, ನಿಮ್ಮ ಅತಿದೊಡ್ಡ ಅವಲಂಬನೆಗಳು ಮತ್ತು ಕಡಿಮೆ-ಬಳಸಿದ ರೂಟ್‌ಗಳನ್ನು ಗುರುತಿಸಿ, ಮತ್ತು ನಿಮ್ಮ ಮೊದಲ ಸ್ಪ್ಲಿಟ್ ಪಾಯಿಂಟ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿ. ನಿಮ್ಮ ಬಳಕೆದಾರರು—ಮತ್ತು ನಿಮ್ಮ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮೆಟ್ರಿಕ್‌ಗಳು—ಅದಕ್ಕಾಗಿ ನಿಮಗೆ ಧನ್ಯವಾದ ಹೇಳುತ್ತಾರೆ.