เรียนรู้วิธีปรับปรุงประสิทธิภาพ JavaScript bundle ด้วยเทคนิค code splitting เพื่อเพิ่มความเร็วเว็บไซต์และประสบการณ์ผู้ใช้สำหรับผู้ใช้งานทั่วโลก
การแบ่งโค้ดโมดูล JavaScript: คู่มือการปรับปรุงประสิทธิภาพ Bundle
ในโลกของการพัฒนาเว็บปัจจุบัน ประสิทธิภาพของเว็บไซต์เป็นสิ่งสำคัญอย่างยิ่ง ผู้ใช้คาดหวังเวลาในการโหลดที่รวดเร็วและประสบการณ์ที่ราบรื่นและตอบสนองได้ดี JavaScript bundle ขนาดใหญ่อาจเป็นอุปสรรคต่อประสิทธิภาพอย่างมาก นำไปสู่ความหงุดหงิดของผู้ใช้และอาจส่งผลกระทบต่อตัวชี้วัดทางธุรกิจที่สำคัญ Code splitting ซึ่งเป็นเทคนิคการแบ่งโค้ดของแอปพลิเคชันออกเป็นส่วนเล็กๆ ที่จัดการได้ง่ายขึ้น เป็นกลยุทธ์ที่สำคัญสำหรับการปรับปรุงประสิทธิภาพ JavaScript bundle และมอบประสบการณ์ผู้ใช้ที่ดีขึ้นทั่วโลก
ทำความเข้าใจปัญหา: JavaScript Bundle ขนาดใหญ่
เว็บแอปพลิเคชันสมัยใหม่มักจะพึ่งพา JavaScript เป็นอย่างมากสำหรับส่วนโต้ตอบ เนื้อหาแบบไดนามิก และฟังก์ชันการทำงานที่ซับซ้อน เมื่อแอปพลิเคชันมีขนาดและความซับซ้อนเพิ่มขึ้น โค้ดเบสของ JavaScript ก็อาจมีขนาดใหญ่ตามไปด้วย เมื่อรวมเป็นไฟล์เดียว (หรือไฟล์ขนาดใหญ่ไม่กี่ไฟล์) สำหรับการนำไปใช้งาน อาจนำไปสู่ปัญหาหลายประการ:
- เวลาในการโหลดเริ่มต้นช้า: ผู้ใช้ต้องดาวน์โหลดและประมวลผล bundle ทั้งหมดก่อนที่แอปพลิเคชันจะสามารถโต้ตอบได้ ซึ่งเป็นปัญหาอย่างยิ่งสำหรับการเชื่อมต่อเครือข่ายที่ช้าหรืออุปกรณ์ที่มีกำลังประมวลผลจำกัด
- เพิ่ม Time to Interactive (TTI): TTI คือการวัดระยะเวลาที่หน้าเว็บจะสามารถโต้ตอบได้อย่างสมบูรณ์ bundle ขนาดใหญ่ส่งผลให้ TTI นานขึ้น ทำให้ผู้ใช้ต้องรอนานขึ้นกว่าจะสามารถโต้ตอบกับแอปพลิเคชันได้อย่างมีประสิทธิภาพ
- สิ้นเปลืองแบนด์วิดท์: ผู้ใช้อาจดาวน์โหลดโค้ดที่ไม่จำเป็นสำหรับหน้าปัจจุบันหรือการโต้ตอบในทันที ซึ่งเป็นการสิ้นเปลืองแบนด์วิดท์และทำให้กระบวนการโหลดโดยรวมยาวนานขึ้น
- เพิ่มเวลาในการแยกวิเคราะห์และคอมไพล์: เบราว์เซอร์ต้องแยกวิเคราะห์และคอมไพล์ bundle ทั้งหมดก่อนจึงจะสามารถรันโค้ด JavaScript ได้ bundle ขนาดใหญ่อาจเพิ่มภาระงานในส่วนนี้อย่างมาก ซึ่งส่งผลกระทบต่อประสิทธิภาพ
Code Splitting คืออะไร?
Code splitting คือแนวปฏิบัติในการแบ่งโค้ด JavaScript ของแอปพลิเคชันออกเป็น bundle ขนาดเล็กและเป็นอิสระ (หรือ "chunks") ที่สามารถโหลดได้ตามความต้องการ แทนที่จะโหลดแอปพลิเคชันทั้งหมดในครั้งแรก คุณจะโหลดเฉพาะโค้ดที่จำเป็นสำหรับมุมมองหรือการโต้ตอบเริ่มต้นเท่านั้น ซึ่งสามารถลดเวลาในการโหลดเริ่มต้นและปรับปรุงประสิทธิภาพโดยรวมได้อย่างมาก
ลองนึกภาพตามนี้: แทนที่จะส่งสารานุกรมทั้งเล่มให้ผู้อ่านในครั้งเดียว คุณจะให้เฉพาะเล่มหรือบทที่พวกเขาต้องการในขณะนั้น ส่วนที่เหลือจะยังคงพร้อมใช้งานหากพวกเขาร้องขอ
ประโยชน์ของ Code Splitting
Code splitting มอบประโยชน์มากมายสำหรับประสิทธิภาพของเว็บไซต์และประสบการณ์ของผู้ใช้:
- ลดเวลาในการโหลดเริ่มต้น: โดยการโหลดเฉพาะโค้ดที่จำเป็นในตอนแรก คุณสามารถลดเวลาในการโหลดเริ่มต้นของแอปพลิเคชันได้อย่างมาก
- ปรับปรุง Time to Interactive (TTI): เวลาในการโหลดเริ่มต้นที่เร็วขึ้นส่งผลโดยตรงต่อ TTI ที่เร็วขึ้น ทำให้ผู้ใช้สามารถโต้ตอบกับแอปพลิเคชันได้เร็วขึ้น
- ลดการใช้แบนด์วิดท์: ผู้ใช้ดาวน์โหลดเฉพาะโค้ดที่พวกเขาต้องการ ซึ่งช่วยลดการใช้แบนด์วิดท์และปรับปรุงประสิทธิภาพ โดยเฉพาะสำหรับผู้ใช้บนอุปกรณ์มือถือหรือที่มีแผนข้อมูลจำกัด ซึ่งเป็นสิ่งสำคัญในภูมิภาคที่มีการเข้าถึงอินเทอร์เน็ตที่จำกัดหรือมีราคาแพง
- ปรับปรุงการแคช (Caching): chunk ขนาดเล็กสามารถแคชโดยเบราว์เซอร์ได้อย่างมีประสิทธิภาพมากขึ้น เมื่อผู้ใช้ไปมาระหว่างหน้าต่างๆ หรือกลับมาที่แอปพลิเคชัน พวกเขาอาจต้องการดาวน์โหลดเฉพาะ chunk ที่อัปเดตเพียงไม่กี่ส่วน ซึ่งช่วยปรับปรุงประสิทธิภาพให้ดียิ่งขึ้น
- ประสบการณ์ผู้ใช้ที่ดีขึ้น: แอปพลิเคชันที่เร็วและตอบสนองได้ดีขึ้นนำไปสู่ประสบการณ์ผู้ใช้ที่ดีขึ้น ซึ่งสามารถแปลงเป็นการมีส่วนร่วมที่เพิ่มขึ้น อัตราการแปลงที่สูงขึ้น และความพึงพอใจของลูกค้าที่ดีขึ้น สำหรับเว็บไซต์อีคอมเมิร์ซที่ให้บริการผู้ใช้ทั่วโลก แม้แต่การปรับปรุงเวลาโหลดเพียงเล็กน้อยก็สามารถส่งผลกระทบต่อยอดขายได้อย่างมาก
ประเภทของ Code Splitting
มีแนวทางหลักสองวิธีในการทำ code splitting:
1. การแบ่งตามคอมโพเนนต์ (Component-Based Splitting)
วิธีนี้เกี่ยวข้องกับการแบ่งโค้ดของคุณตามคอมโพเนนต์หรือโมดูลที่ประกอบกันเป็นแอปพลิเคชันของคุณ แต่ละคอมโพเนนต์หรือโมดูลจะถูกรวมเป็น chunk แยกต่างหาก และ chunk เหล่านี้จะถูกโหลดเมื่อจำเป็นต้องใช้คอมโพเนนต์นั้นๆ เท่านั้น ซึ่งมักทำได้โดยใช้ dynamic import
ตัวอย่าง (React กับ dynamic imports):
import React, { useState, useEffect } from 'react';
function MyComponent() {
const [Component, setComponent] = useState(null);
useEffect(() => {
import('./LargeComponent') // Dynamic import
.then((module) => {
setComponent(() => module.default);
})
.catch((error) => {
console.error('Error loading component:', error);
});
}, []);
if (!Component) {
return Loading...
;
}
return ; // Render the dynamically imported component
}
export default MyComponent;
ในตัวอย่างนี้ `LargeComponent` จะถูกโหลดก็ต่อเมื่อ `MyComponent` ถูกเรนเดอร์และต้องการใช้งาน ฟังก์ชัน `import()` จะคืนค่าเป็น promise ซึ่งช่วยให้คุณสามารถจัดการกระบวนการโหลดแบบอะซิงโครนัสได้
2. การแบ่งตามเส้นทาง (Route-Based Splitting)
แนวทางนี้เกี่ยวข้องกับการแบ่งโค้ดของคุณตามเส้นทาง (route) ของแอปพลิเคชัน แต่ละเส้นทางจะเชื่อมโยงกับ chunk ของโค้ดที่เฉพาะเจาะจง และ chunk นี้จะถูกโหลดเมื่อผู้ใช้ไปยังเส้นทางนั้นเท่านั้น ซึ่งนิยมใช้ในแอปพลิเคชันหน้าเดียว (Single-Page Applications - SPAs) เพื่อปรับปรุงเวลาในการโหลดเริ่มต้น
ตัวอย่าง (React Router กับ dynamic imports):
import React, { lazy, Suspense } from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
const Home = lazy(() => import('./pages/Home'));
const About = lazy(() => import('./pages/About'));
const Contact = lazy(() => import('./pages/Contact'));
function App() {
return (
Loading...
ในตัวอย่างนี้ `lazy` และ `Suspense` จาก React ถูกใช้เพื่อโหลดคอมโพเนนต์แบบไดนามิกตามเส้นทาง แต่ละหน้า (`Home`, `About`, `Contact`) จะถูกโหลดก็ต่อเมื่อผู้ใช้ไปยังเส้นทางนั้นๆ
เครื่องมือสำหรับ Code Splitting
Bundler ยอดนิยมหลายตัวรองรับ code splitting ในตัว:
1. Webpack
Webpack เป็น module bundler ที่ทรงพลังและหลากหลายซึ่งมีความสามารถในการทำ code splitting ที่ครอบคลุม รองรับทั้งการแบ่งตามคอมโพเนนต์และตามเส้นทาง รวมถึงคุณสมบัติขั้นสูง เช่น การปรับปรุงประสิทธิภาพ chunk และการ prefetching
ตัวอย่างการกำหนดค่า Webpack:
module.exports = {
entry: './src/index.js',
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'dist'),
chunkFilename: '[name].bundle.js',
},
optimization: {
splitChunks: {
chunks: 'all',
},
},
};
การกำหนดค่านี้จะเปิดใช้งานการปรับปรุงประสิทธิภาพ `splitChunks` ที่มีในตัวของ Webpack ซึ่งจะแบ่งโค้ดของคุณออกเป็น chunk แยกต่างหากโดยอัตโนมัติตาม dependencies ทั่วไปและการใช้งานโมดูล ซึ่งสามารถลดขนาดของ bundle เริ่มต้นของคุณได้อย่างมาก
2. Parcel
Parcel เป็น bundler แบบ zero-configuration ที่ทำให้กระบวนการทำ code splitting ง่ายขึ้น มันจะตรวจจับและแบ่งโค้ดของคุณโดยอัตโนมัติตาม dynamic import โดยต้องการการกำหนดค่าน้อยที่สุด
หากต้องการเปิดใช้งาน code splitting ใน Parcel เพียงแค่ใช้ dynamic import ในโค้ดของคุณ:
import('./my-module').then((module) => {
// Use the module
});
Parcel จะสร้าง chunk แยกสำหรับ `my-module` โดยอัตโนมัติและโหลดตามความต้องการ
3. Rollup
Rollup เป็น module bundler ที่ออกแบบมาสำหรับไลบรารีเป็นหลัก นอกจากนี้ยังสามารถใช้สำหรับแอปพลิเคชันและรองรับ code splitting ผ่าน dynamic import และการกำหนดค่าด้วยตนเอง
ตัวอย่างการกำหนดค่า Rollup:
import { nodeResolve } from '@rollup/plugin-node-resolve';
export default {
input: 'src/index.js',
output: {
dir: 'dist',
format: 'esm',
chunkFileNames: '[name]-[hash].js',
},
plugins: [
nodeResolve(),
],
manualChunks: {
vendor: ['react', 'react-dom'],
},
};
ตัวเลือก `manualChunks` ช่วยให้คุณสามารถกำหนดวิธีการแบ่งโค้ดของคุณออกเป็น chunk ด้วยตนเอง ซึ่งให้การควบคุมกระบวนการ bundling มากขึ้น
การนำ Code Splitting ไปใช้งาน: คำแนะนำทีละขั้นตอน
นี่คือคำแนะนำทีละขั้นตอนทั่วไปในการนำ code splitting ไปใช้ในแอปพลิเคชัน JavaScript ของคุณ:
- วิเคราะห์แอปพลิเคชันของคุณ: ระบุส่วนต่างๆ ในแอปพลิเคชันของคุณที่สามารถได้รับประโยชน์จาก code splitting มองหาคอมโพเนนต์ขนาดใหญ่ โมดูลที่ใช้ไม่บ่อย หรือเส้นทางที่ไม่จำเป็นต้องใช้ทันทีเมื่อโหลดครั้งแรก ใช้เครื่องมืออย่าง Webpack Bundle Analyzer เพื่อดูภาพรวมของ bundle ของคุณและระบุส่วนที่อาจปรับปรุงได้
- เลือก Bundler: เลือก bundler ที่รองรับ code splitting และตรงตามความต้องการของโครงการของคุณ Webpack, Parcel และ Rollup ล้วนเป็นตัวเลือกที่ยอดเยี่ยม
- ใช้ Dynamic Imports: ใช้ dynamic import (`import()`) เพื่อโหลดโมดูลตามความต้องการ นี่คือกุญแจสำคัญในการเปิดใช้งาน code splitting
- กำหนดค่า Bundler ของคุณ: กำหนดค่า bundler ของคุณเพื่อแบ่งโค้ดของคุณออกเป็น chunk อย่างถูกต้อง โปรดดูเอกสารประกอบสำหรับ bundler ที่คุณเลือกสำหรับตัวเลือกการกำหนดค่าเฉพาะ
- ทดสอบและปรับปรุงประสิทธิภาพ: ทดสอบแอปพลิเคชันของคุณอย่างละเอียดหลังจากนำ code splitting ไปใช้เพื่อให้แน่ใจว่าทุกอย่างทำงานตามที่คาดไว้ ใช้เครื่องมือสำหรับนักพัฒนาเบราว์เซอร์เพื่อตรวจสอบคำขอเครือข่ายและยืนยันว่า chunk กำลังถูกโหลดอย่างมีประสิทธิภาพ ทดลองกับตัวเลือกการกำหนดค่าต่างๆ เพื่อปรับปรุงขนาด bundle และประสิทธิภาพการโหลดของคุณ
- พิจารณา Preloading และ Prefetching: สำรวจเทคนิค preloading และ prefetching เพื่อปรับปรุงประสิทธิภาพเพิ่มเติม Preloading ช่วยให้คุณสามารถจัดลำดับความสำคัญในการโหลดทรัพยากรที่สำคัญ ในขณะที่ prefetching ช่วยให้คุณสามารถโหลดทรัพยากรที่น่าจะจำเป็นในอนาคตได้
เทคนิค Code Splitting ขั้นสูง
นอกเหนือจากพื้นฐานแล้ว ยังมีเทคนิคขั้นสูงหลายอย่างที่คุณสามารถใช้เพื่อปรับปรุงกลยุทธ์ code splitting ของคุณให้ดียิ่งขึ้น:
1. Vendor Chunking
วิธีนี้เกี่ยวข้องกับการแยกโค้ดของแอปพลิเคชันของคุณออกจากไลบรารีของบุคคลที่สาม (เช่น React, Lodash) ไปไว้ใน chunk "vendor" ที่แยกต่างหาก เนื่องจากไลบรารีของบุคคลที่สามไม่ค่อยมีการเปลี่ยนแปลงบ่อยนัก วิธีนี้จึงช่วยให้เบราว์เซอร์สามารถแคชได้อย่างมีประสิทธิภาพมากขึ้น การกำหนดค่า `splitChunks` ของ Webpack ทำให้เรื่องนี้ค่อนข้างตรงไปตรงมา
2. Common Chunk Extraction
หากมีหลาย chunk ที่ใช้ dependencies ร่วมกัน คุณสามารถดึง dependencies เหล่านี้ออกมาเป็น chunk "common" ที่แยกต่างหากได้ ซึ่งจะช่วยป้องกันการทำซ้ำของโค้ดและลดขนาด bundle โดยรวมลงได้อีกครั้ง การกำหนดค่า `splitChunks` ของ Webpack สามารถจัดการเรื่องนี้ได้โดยอัตโนมัติ
3. Route-Based Prefetching
เมื่อผู้ใช้กำลังจะไปยังเส้นทางใหม่ คุณสามารถ prefetch โค้ดสำหรับเส้นทางนั้นในเบื้องหลังได้ ซึ่งจะช่วยให้มั่นใจได้ว่าเส้นทางจะโหลดทันทีเมื่อผู้ใช้คลิกลิงก์ สามารถใช้แท็ก `<link rel="prefetch">` หรือไลบรารีอย่าง `react-router-dom` สำหรับการ prefetching ตามเส้นทางได้
4. Module Federation (Webpack 5+)
Module Federation ช่วยให้คุณสามารถแชร์โค้ดระหว่างแอปพลิเคชันต่างๆ ได้ในขณะรันไทม์ ซึ่งมีประโยชน์อย่างยิ่งสำหรับสถาปัตยกรรม microfrontends แทนที่จะสร้างแอปพลิเคชันแยกกันที่ดาวน์โหลด dependencies ที่แชร์กันอย่างอิสระ Module Federation ช่วยให้สามารถแชร์โมดูลจาก build ของกันและกันได้โดยตรง
แนวทางปฏิบัติที่ดีที่สุดสำหรับ Code Splitting
เพื่อให้แน่ใจว่าการนำ code splitting ไปใช้ของคุณมีประสิทธิภาพและสามารถบำรุงรักษาได้ ให้ปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดเหล่านี้:
- เริ่มตั้งแต่เนิ่นๆ: นำ code splitting มาใช้ตั้งแต่ช่วงแรกของกระบวนการพัฒนา แทนที่จะทำเป็นสิ่งสุดท้าย ซึ่งจะทำให้ง่ายต่อการระบุโอกาสในการปรับปรุงประสิทธิภาพและหลีกเลี่ยงการ refactor ที่สำคัญในภายหลัง
- ติดตามประสิทธิภาพ: ติดตามประสิทธิภาพของแอปพลิเคชันของคุณอย่างต่อเนื่องหลังจากนำ code splitting ไปใช้ ใช้เครื่องมือสำหรับนักพัฒนาเบราว์เซอร์และเครื่องมือติดตามประสิทธิภาพเพื่อระบุคอขวดและส่วนที่ต้องปรับปรุง
- ทำให้เวิร์กโฟลว์เป็นอัตโนมัติ: ทำให้เวิร์กโฟลว์ code splitting ของคุณเป็นอัตโนมัติโดยใช้เครื่องมือเช่น CI/CD pipelines ซึ่งจะช่วยให้มั่นใจได้ว่า code splitting ถูกนำไปใช้อย่างสม่ำเสมอและสามารถตรวจจับการถดถอยของประสิทธิภาพได้ตั้งแต่เนิ่นๆ
- รักษาขนาด Bundle ให้เล็ก: ตั้งเป้าหมายที่จะทำให้ chunk แต่ละส่วนของคุณมีขนาดเล็กที่สุดเท่าที่จะทำได้ chunk ที่เล็กกว่าจะง่ายต่อการแคชและโหลดได้เร็วกว่า
- ใช้ชื่อ Chunk ที่สื่อความหมาย: ใช้ชื่อที่สื่อความหมายสำหรับ chunk ของคุณเพื่อให้ง่ายต่อการเข้าใจวัตถุประสงค์และระบุปัญหาที่อาจเกิดขึ้น
- จัดทำเอกสารกลยุทธ์ Code Splitting ของคุณ: จัดทำเอกสารกลยุทธ์ code splitting ของคุณอย่างชัดเจนเพื่อให้นักพัฒนาคนอื่นๆ สามารถเข้าใจและบำรุงรักษาได้
Code Splitting และประสิทธิภาพในระดับโลก
Code splitting มีความสำคัญอย่างยิ่งสำหรับแอปพลิเคชันที่ให้บริการผู้ใช้ทั่วโลก ผู้ใช้ในภูมิภาคต่างๆ อาจมีความเร็วเครือข่าย ความสามารถของอุปกรณ์ และค่าใช้จ่ายแผนข้อมูลที่แตกต่างกัน ด้วยการปรับปรุงประสิทธิภาพ JavaScript bundle ของคุณด้วย code splitting คุณสามารถมั่นใจได้ว่าแอปพลิเคชันของคุณจะทำงานได้ดีสำหรับผู้ใช้ทุกคน ไม่ว่าพวกเขาจะอยู่ที่ไหนหรืออยู่ในสถานการณ์ใด เว็บไซต์ที่โหลดเร็วและมีประสิทธิภาพในโตเกียวอาจประสบปัญหาในพื้นที่ชนบทที่มีแบนด์วิดท์จำกัด Code splitting ช่วยลดความแปรปรวนด้านประสิทธิภาพนี้ได้
พิจารณาปัจจัยเหล่านี้เมื่อนำ code splitting ไปใช้สำหรับผู้ใช้ทั่วโลก:
- สภาพเครือข่าย: ปรับปรุงประสิทธิภาพสำหรับผู้ใช้ที่มีการเชื่อมต่อเครือข่ายช้า Code splitting สามารถช่วยลดปริมาณข้อมูลที่ต้องดาวน์โหลดในตอนแรก ซึ่งช่วยปรับปรุงประสบการณ์สำหรับผู้ใช้บนเครือข่าย 2G หรือ 3G
- ความสามารถของอุปกรณ์: ปรับปรุงประสิทธิภาพสำหรับผู้ใช้ที่มีอุปกรณ์กำลังต่ำ Code splitting สามารถลดปริมาณ JavaScript ที่ต้องแยกวิเคราะห์และรัน ซึ่งช่วยปรับปรุงประสิทธิภาพบนอุปกรณ์ที่เก่ากว่าหรือมีกำลังน้อยกว่า
- ค่าใช้จ่ายด้านข้อมูล: ลดการใช้ข้อมูลให้เหลือน้อยที่สุดเพื่อลดค่าใช้จ่ายสำหรับผู้ใช้ที่มีแผนข้อมูลจำกัด Code splitting ช่วยให้มั่นใจได้ว่าผู้ใช้จะดาวน์โหลดเฉพาะโค้ดที่พวกเขาต้องการ ซึ่งช่วยลดการใช้แบนด์วิดท์และประหยัดเงินให้พวกเขา
- Content Delivery Networks (CDNs): ใช้ประโยชน์จาก CDN เพื่อกระจายโค้ดของคุณไปยังเซิร์ฟเวอร์หลายแห่งทั่วโลก ซึ่งจะช่วยลดค่าความหน่วง (latency) และปรับปรุงความเร็วในการดาวน์โหลดสำหรับผู้ใช้ในภูมิภาคต่างๆ
สรุป
การแบ่งโค้ดโมดูล JavaScript เป็นเทคนิคที่สำคัญสำหรับการปรับปรุงประสิทธิภาพของเว็บไซต์และมอบประสบการณ์ผู้ใช้ที่ดีขึ้น ด้วยการแบ่งโค้ดของแอปพลิเคชันของคุณออกเป็นส่วนเล็กๆ ที่จัดการได้ง่ายขึ้น คุณสามารถลดเวลาในการโหลดเริ่มต้น ปรับปรุง TTI ลดการใช้แบนด์วิดท์ และเพิ่มประสิทธิภาพโดยรวมได้ ไม่ว่าคุณจะสร้างเว็บไซต์ขนาดเล็กหรือเว็บแอปพลิเคชันขนาดใหญ่ code splitting เป็นเครื่องมือที่จำเป็นสำหรับนักพัฒนาเว็บทุกคนที่ใส่ใจในประสิทธิภาพและประสบการณ์ของผู้ใช้ การนำ code splitting ไปใช้ การวิเคราะห์ผลกระทบ และการปรับปรุงอย่างต่อเนื่องจะนำไปสู่ประสบการณ์ที่ราบรื่นยิ่งขึ้นสำหรับผู้ใช้ของคุณทั่วโลก อย่ารอช้า – เริ่มแบ่งโค้ดของคุณตั้งแต่วันนี้!