આધુનિક જાવાસ્ક્રિપ્ટ ડેવલપમેન્ટમાં, વેબપેક, રોલઅપ અને પાર્સલ જેવા મોડ્યુલ બંડલર્સ ડિપેન્ડન્સીનું સંચાલન કરવા અને ડિપ્લોયમેન્ટ માટે ઓપ્ટિમાઇઝ્ડ બંડલ બનાવવા માટે આવશ્યક સાધનો છે. આ બંડલર્સ મોડ્યુલ ગ્રાફ પર આધાર રાખે છે, જે તમારી એપ્લિકેશનમાં મોડ્યુલ્સ વચ્ચેની ડિપેન્ડન્સીનું પ્રતિનિધિત્વ છે. આ ગ્રાફની જટિલતા બિલ્ડ સમય, બંડલનું કદ અને એકંદરે એપ્લિકેશન પર્ફોર્મન્સ પર નોંધપાત્ર અસર કરી શકે છે. તેથી, ડિપેન્ડન્સીને સરળ બનાવીને મોડ્યુલ ગ્રાફને ઓપ્ટિમાઇઝ કરવું એ ફ્રન્ટ-એન્ડ ડેવલપમેન્ટનું એક મહત્ત્વનું પાસું છે.
મોડ્યુલ ગ્રાફને સમજવું
મોડ્યુલ ગ્રાફ એ એક ડાયરેક્ટેડ ગ્રાફ છે જ્યાં દરેક નોડ એક મોડ્યુલ (જાવાસ્ક્રિપ્ટ ફાઇલ, CSS ફાઇલ, ઇમેજ, વગેરે) નું પ્રતિનિધિત્વ કરે છે અને દરેક એજ મોડ્યુલ્સ વચ્ચેની ડિપેન્ડન્સીનું પ્રતિનિધિત્વ કરે છે. જ્યારે બંડલર તમારા કોડને પ્રોસેસ કરે છે, ત્યારે તે એન્ટ્રી પોઇન્ટ (સામાન્ય રીતે `index.js` અથવા `main.js`) થી શરૂ થાય છે અને ડિપેન્ડન્સીને રિકર્સિવલી ટ્રાવર્સ કરે છે, અને મોડ્યુલ ગ્રાફ બનાવે છે. આ ગ્રાફનો ઉપયોગ પછી વિવિધ ઓપ્ટિમાઇઝેશન કરવા માટે થાય છે, જેમ કે:
ટ્રી શેકિંગ: ડેડ કોડ (કોડ જેનો ક્યારેય ઉપયોગ થતો નથી) દૂર કરવો.
કોડ સ્પ્લિટિંગ: કોડને નાના ભાગોમાં વિભાજીત કરવો જે માંગ પર લોડ કરી શકાય.
મોડ્યુલ કોન્કેટેનેશન: ઓવરહેડ ઘટાડવા માટે બહુવિધ મોડ્યુલ્સને એક જ સ્કોપમાં જોડવા.
મિનિફિકેશન: વ્હાઇટસ્પેસ દૂર કરીને અને વેરીએબલના નામને ટૂંકા કરીને કોડનું કદ ઘટાડવું.
એક જટિલ મોડ્યુલ ગ્રાફ આ ઓપ્ટિમાઇઝેશનમાં અવરોધ લાવી શકે છે, જેનાથી બંડલનું કદ મોટું થાય છે અને લોડિંગ સમય ધીમો થાય છે. તેથી, શ્રેષ્ઠ પર્ફોર્મન્સ પ્રાપ્ત કરવા માટે મોડ્યુલ ગ્રાફને સરળ બનાવવો આવશ્યક છે.
ડિપેન્ડન્સી ગ્રાફ સરળીકરણ માટેની તકનીકો
ડિપેન્ડન્સી ગ્રાફને સરળ બનાવવા અને બિલ્ડ પર્ફોર્મન્સ સુધારવા માટે ઘણી તકનીકોનો ઉપયોગ કરી શકાય છે. તેમાં શામેલ છે:
૧. સર્ક્યુલર ડિપેન્ડન્સીને ઓળખવી અને દૂર કરવી
સર્ક્યુલર ડિપેન્ડન્સી ત્યારે થાય છે જ્યારે બે કે તેથી વધુ મોડ્યુલ્સ એકબીજા પર પ્રત્યક્ષ કે પરોક્ષ રીતે નિર્ભર હોય. ઉદાહરણ તરીકે, મોડ્યુલ A મોડ્યુલ B પર નિર્ભર હોઈ શકે છે, જે બદલામાં મોડ્યુલ A પર નિર્ભર હોય છે. સર્ક્યુલર ડિપેન્ડન્સી મોડ્યુલ ઇનિશિયલાઇઝેશન, કોડ એક્ઝેક્યુશન અને ટ્રી શેકિંગમાં સમસ્યાઓ ઊભી કરી શકે છે. જ્યારે સર્ક્યુલર ડિપેન્ડન્સી શોધી કાઢવામાં આવે છે ત્યારે બંડલર્સ સામાન્ય રીતે ચેતવણીઓ અથવા એરર આપે છે.
ઉદાહરણ:
moduleA.js:
import { moduleBFunction } from './moduleB';
export function moduleAFunction() {
return moduleBFunction();
}
moduleB.js:
import { moduleAFunction } from './moduleA';
export function moduleBFunction() {
return moduleAFunction();
}
ઉકેલ:
સર્ક્યુલર ડિપેન્ડન્સી દૂર કરવા માટે કોડને રિફેક્ટર કરો. આમાં ઘણીવાર એક નવું મોડ્યુલ બનાવવું શામેલ હોય છે જેમાં શેર્ડ ફંક્શનાલિટી હોય અથવા ડિપેન્ડન્સી ઇન્જેક્શનનો ઉપયોગ કરવો.
રિફેક્ટર્ડ:
utils.js:
export function sharedFunction() {
// Shared logic here
return "Shared value";
}
moduleA.js:
import { sharedFunction } from './utils';
export function moduleAFunction() {
return sharedFunction();
}
moduleB.js:
import { sharedFunction } from './utils';
export function moduleBFunction() {
return sharedFunction();
}
કાર્યક્ષમ સૂચન: નિયમિતપણે તમારા કોડબેઝને `madge` અથવા બંડલર-સ્પેસિફિક પ્લગઇન્સ જેવા સાધનોનો ઉપયોગ કરીને સર્ક્યુલર ડિપેન્ડન્સી માટે સ્કેન કરો અને તેને તાત્કાલિક ઉકેલો.
૨. ઇમ્પોર્ટ્સને ઓપ્ટિમાઇઝ કરવું
તમે જે રીતે મોડ્યુલ્સ ઇમ્પોર્ટ કરો છો તે મોડ્યુલ ગ્રાફને નોંધપાત્ર રીતે અસર કરી શકે છે. નેમ્ડ ઇમ્પોર્ટ્સનો ઉપયોગ અને વાઇલ્ડકાર્ડ ઇમ્પોર્ટ્સ ટાળવાથી બંડલરને ટ્રી શેકિંગ વધુ અસરકારક રીતે કરવામાં મદદ મળી શકે છે.
ઉદાહરણ (બિનકાર્યક્ષમ):
import * as utils from './utils';
utils.functionA();
utils.functionB();
આ કિસ્સામાં, બંડલર કદાચ નક્કી ન કરી શકે કે `utils.js` માંથી કયા ફંક્શન્સનો વાસ્તવમાં ઉપયોગ થાય છે, અને સંભવિતપણે બિનઉપયોગી કોડને બંડલમાં શામેલ કરી શકે છે.
ઉદાહરણ (કાર્યક્ષમ):
import { functionA, functionB } from './utils';
functionA();
functionB();
નેમ્ડ ઇમ્પોર્ટ્સ સાથે, બંડલર સરળતાથી ઓળખી શકે છે કે કયા ફંક્શન્સનો ઉપયોગ થાય છે અને બાકીનાને દૂર કરી શકે છે.
કાર્યક્ષમ સૂચન: જ્યારે પણ શક્ય હોય ત્યારે વાઇલ્ડકાર્ડ ઇમ્પોર્ટ્સ કરતાં નેમ્ડ ઇમ્પોર્ટ્સને પ્રાધાન્ય આપો. આ પ્રથાને લાગુ કરવા માટે ઇમ્પોર્ટ-સંબંધિત નિયમો સાથે ESLint જેવા સાધનોનો ઉપયોગ કરો.
૩. કોડ સ્પ્લિટિંગ
કોડ સ્પ્લિટિંગ એ તમારી એપ્લિકેશનને નાના ભાગોમાં વિભાજીત કરવાની પ્રક્રિયા છે જે માંગ પર લોડ કરી શકાય છે. આ તમારી એપ્લિકેશનનો પ્રારંભિક લોડ સમય ઘટાડે છે કારણ કે તે ફક્ત પ્રારંભિક દૃશ્ય માટે જરૂરી કોડ લોડ કરે છે. સામાન્ય કોડ સ્પ્લિટિંગ વ્યૂહરચનાઓમાં શામેલ છે:
વેન્ડર સ્પ્લિટિંગ: તૃતીય-પક્ષ લાઇબ્રેરીઓને તમારા એપ્લિકેશન કોડથી અલગ કરવી.
ઉદાહરણ (રીએક્ટ સાથે રાઉટ-આધારિત સ્પ્લિટિંગ):
import React, { lazy, Suspense } from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
const Home = lazy(() => import('./Home'));
const About = lazy(() => import('./About'));
function App() {
return (
Loading...
}>
);
}
export default App;
આ ઉદાહરણમાં, `Home` અને `About` કમ્પોનન્ટ્સ લેઝીલી લોડ થાય છે, જેનો અર્થ છે કે તે ત્યારે જ લોડ થાય છે જ્યારે વપરાશકર્તા તેમના સંબંધિત રાઉટ્સ પર નેવિગેટ કરે છે. `Suspense` કમ્પોનન્ટ, કમ્પોનન્ટ્સ લોડ થતી વખતે ફોલબેક UI પ્રદાન કરે છે.
કાર્યક્ષમ સૂચન: તમારા બંડલરની ગોઠવણી અથવા લાઇબ્રેરી-વિશિષ્ટ સુવિધાઓ (દા.ત., React.lazy, Vue.js async components) નો ઉપયોગ કરીને કોડ સ્પ્લિટિંગ લાગુ કરો. વધુ સ્પ્લિટિંગ માટેની તકો ઓળખવા માટે નિયમિતપણે તમારા બંડલના કદનું વિશ્લેષણ કરો.
૪. ડાયનેમિક ઇમ્પોર્ટ્સ
ડાયનેમિક ઇમ્પોર્ટ્સ (`import()` ફંક્શનનો ઉપયોગ કરીને) તમને રનટાઇમ પર માંગ મુજબ મોડ્યુલ્સ લોડ કરવાની મંજૂરી આપે છે. આ ઓછાં ઉપયોગમાં લેવાતા મોડ્યુલ્સને લોડ કરવા માટે અથવા એવી પરિસ્થિતિઓમાં કોડ સ્પ્લિટિંગ લાગુ કરવા માટે ઉપયોગી થઈ શકે છે જ્યાં સ્ટેટિક ઇમ્પોર્ટ્સ યોગ્ય ન હોય.
આ ઉદાહરણમાં, `myModule.js` ફક્ત ત્યારે જ લોડ થાય છે જ્યારે બટન પર ક્લિક કરવામાં આવે છે.
કાર્યક્ષમ સૂચન: તમારી એપ્લિકેશનના પ્રારંભિક લોડ માટે આવશ્યક ન હોય તેવા ફીચર્સ અથવા મોડ્યુલ્સ માટે ડાયનેમિક ઇમ્પોર્ટ્સનો ઉપયોગ કરો.
૫. કમ્પોનન્ટ્સ અને ઇમેજીસનું લેઝી લોડિંગ
લેઝી લોડિંગ એક એવી તકનીક છે જે સંસાધનોના લોડિંગને ત્યાં સુધી મુલતવી રાખે છે જ્યાં સુધી તેની જરૂર ન પડે. આ તમારી એપ્લિકેશનનો પ્રારંભિક લોડ સમય નોંધપાત્ર રીતે સુધારી શકે છે, ખાસ કરીને જો તમારી પાસે ઘણી બધી ઇમેજીસ અથવા મોટા કમ્પોનન્ટ્સ હોય જે તરત જ દેખાતા ન હોય.
કાર્યક્ષમ સૂચન: સ્ક્રીન પર તરત જ ન દેખાતી ઇમેજીસ, વિડિઓઝ અને અન્ય સંસાધનો માટે લેઝી લોડિંગ લાગુ કરો. `lozad.js` જેવી લાઇબ્રેરીઓ અથવા બ્રાઉઝર-નેટિવ લેઝી-લોડિંગ એટ્રીબ્યુટ્સનો ઉપયોગ કરવાનું વિચારો.
૬. ટ્રી શેકિંગ અને ડેડ કોડ એલિમિનેશન
ટ્રી શેકિંગ એક એવી તકનીક છે જે બિલ્ડ પ્રક્રિયા દરમિયાન તમારી એપ્લિકેશનમાંથી બિનઉપયોગી કોડને દૂર કરે છે. આ બંડલનું કદ નોંધપાત્ર રીતે ઘટાડી શકે છે, ખાસ કરીને જો તમે એવી લાઇબ્રેરીઓનો ઉપયોગ કરી રહ્યાં હોવ જેમાં ઘણો એવો કોડ શામેલ હોય જેની તમને જરૂર નથી.
ઉદાહરણ:
ધારો કે તમે એક યુટિલિટી લાઇબ્રેરીનો ઉપયોગ કરી રહ્યાં છો જેમાં ૧૦૦ ફંક્શન્સ છે, પરંતુ તમે તમારી એપ્લિકેશનમાં તેમાંથી ફક્ત ૫ નો ઉપયોગ કરો છો. ટ્રી શેકિંગ વિના, આખી લાઇબ્રેરી તમારા બંડલમાં શામેલ થઈ જશે. ટ્રી શેકિંગ સાથે, ફક્ત તે ૫ ફંક્શન્સ જ શામેલ થશે જેનો તમે ઉપયોગ કરો છો.
ગોઠવણી:
ખાતરી કરો કે તમારું બંડલર ટ્રી શેકિંગ કરવા માટે ગોઠવેલું છે. વેબપેકમાં, આ સામાન્ય રીતે પ્રોડક્શન મોડનો ઉપયોગ કરતી વખતે ડિફોલ્ટ રૂપે સક્ષમ હોય છે. રોલઅપમાં, તમારે `@rollup/plugin-commonjs` પ્લગઇનનો ઉપયોગ કરવાની જરૂર પડી શકે છે.
કાર્યક્ષમ સૂચન: તમારા બંડલરને ટ્રી શેકિંગ કરવા માટે ગોઠવો અને ખાતરી કરો કે તમારો કોડ ટ્રી શેકિંગ સાથે સુસંગત હોય તે રીતે લખાયેલ છે (દા.ત., ES મોડ્યુલ્સનો ઉપયોગ કરીને).
૭. ડિપેન્ડન્સી ઘટાડવી
તમારા પ્રોજેક્ટમાં ડિપેન્ડન્સીની સંખ્યા સીધી રીતે મોડ્યુલ ગ્રાફની જટિલતાને અસર કરી શકે છે. દરેક ડિપેન્ડન્સી ગ્રાફમાં ઉમેરો કરે છે, જે સંભવિતપણે બિલ્ડ સમય અને બંડલનું કદ વધારે છે. નિયમિતપણે તમારી ડિપેન્ડન્સીની સમીક્ષા કરો અને જેની હવે જરૂર નથી અથવા જેને નાના વિકલ્પોથી બદલી શકાય છે તેને દૂર કરો.
ઉદાહરણ:
એક સરળ કાર્ય માટે મોટી યુટિલિટી લાઇબ્રેરીનો ઉપયોગ કરવાને બદલે, તમારું પોતાનું ફંક્શન લખવાનું અથવા નાની, વધુ વિશિષ્ટ લાઇબ્રેરીનો ઉપયોગ કરવાનું વિચારો.
કાર્યક્ષમ સૂચન: `npm audit` અથવા `yarn audit` જેવા સાધનોનો ઉપયોગ કરીને નિયમિતપણે તમારી ડિપેન્ડન્સીની સમીક્ષા કરો અને ડિપેન્ડન્સીની સંખ્યા ઘટાડવા અથવા તેને નાના વિકલ્પોથી બદલવાની તકો ઓળખો.
૮. બંડલ સાઈઝ અને પર્ફોર્મન્સનું વિશ્લેષણ
સુધારણા માટેના ક્ષેત્રોને ઓળખવા માટે નિયમિતપણે તમારા બંડલના કદ અને પર્ફોર્મન્સનું વિશ્લેષણ કરો. વેબપેક-બંડલ-એનાલાઈઝર અને લાઇટહાઉસ જેવા સાધનો તમને મોટા મોડ્યુલ્સ, બિનઉપયોગી કોડ અને પર્ફોર્મન્સની સમસ્યાઓ ઓળખવામાં મદદ કરી શકે છે.
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
module.exports = {
// ... other webpack configuration
plugins: [
new BundleAnalyzerPlugin()
]
};
જ્યારે તમે તમારું બિલ્ડ ચલાવશો, ત્યારે પ્લગઇન એક ઇન્ટરેક્ટિવ ટ્રીમેપ જનરેટ કરશે જે તમારા બંડલમાં દરેક મોડ્યુલનું કદ બતાવે છે.
કાર્યક્ષમ સૂચન: તમારી બિલ્ડ પ્રક્રિયામાં બંડલ વિશ્લેષણ સાધનોને એકીકૃત કરો અને ઓપ્ટિમાઇઝેશન માટેના ક્ષેત્રોને ઓળખવા માટે નિયમિતપણે પરિણામોની સમીક્ષા કરો.
૯. મોડ્યુલ ફેડરેશન
મોડ્યુલ ફેડરેશન, વેબપેક ૫ માં એક સુવિધા છે, જે તમને રનટાઇમ પર વિવિધ એપ્લિકેશનો વચ્ચે કોડ શેર કરવાની મંજૂરી આપે છે. આ માઇક્રોફ્રન્ટએન્ડ્સ બનાવવા માટે અથવા વિવિધ પ્રોજેક્ટ્સ વચ્ચે સામાન્ય કમ્પોનન્ટ્સ શેર કરવા માટે ઉપયોગી થઈ શકે છે. મોડ્યુલ ફેડરેશન કોડના ડુપ્લિકેશનને ટાળીને બંડલનું કદ ઘટાડવામાં અને પર્ફોર્મન્સ સુધારવામાં મદદ કરી શકે છે.
કાર્યક્ષમ સૂચન: શેર્ડ કોડવાળી મોટી એપ્લિકેશનો માટે અથવા માઇક્રોફ્રન્ટએન્ડ્સ બનાવવા માટે મોડ્યુલ ફેડરેશનનો ઉપયોગ કરવાનું વિચારો.
વિશિષ્ટ બંડલર વિચારણાઓ
જ્યારે મોડ્યુલ ગ્રાફ ઓપ્ટિમાઇઝેશનની વાત આવે છે ત્યારે વિવિધ બંડલર્સની અલગ-અલગ શક્તિઓ અને નબળાઈઓ હોય છે. અહીં લોકપ્રિય બંડલર્સ માટે કેટલીક વિશિષ્ટ વિચારણાઓ છે:
વધુ આક્રમક ટ્રી શેકિંગને સક્ષમ કરવા માટે `optimization.usedExports` વિકલ્પનો ઉપયોગ કરો.
`webpack-bundle-analyzer` અને `circular-dependency-plugin` જેવા પ્લગઇન્સનું અન્વેષણ કરો.
સુધારેલા પર્ફોર્મન્સ અને મોડ્યુલ ફેડરેશન જેવી સુવિધાઓ માટે વેબપેક ૫ પર અપગ્રેડ કરવાનું વિચારો.
રોલઅપ
રોલઅપ તેની ઉત્તમ ટ્રી શેકિંગ ક્ષમતાઓ માટે જાણીતું છે.
CommonJS મોડ્યુલ્સને સપોર્ટ કરવા માટે `@rollup/plugin-commonjs` પ્લગઇનનો ઉપયોગ કરો.
શ્રેષ્ઠ ટ્રી શેકિંગ માટે ES મોડ્યુલ્સ આઉટપુટ કરવા માટે રોલઅપને ગોઠવો.
`rollup-plugin-visualizer` જેવા પ્લગઇન્સનું અન્વેષણ કરો.
પાર્સલ
પાર્સલ તેના શૂન્ય-ગોઠવણી અભિગમ માટે જાણીતું છે.
પાર્સલ આપમેળે કોડ સ્પ્લિટિંગ અને ટ્રી શેકિંગ કરે છે.
તમે પ્લગઇન્સ અને ગોઠવણી ફાઇલોનો ઉપયોગ કરીને પાર્સલના વર્તનને કસ્ટમાઇઝ કરી શકો છો.
વૈશ્વિક પરિપ્રેક્ષ્ય: વિવિધ સંદર્ભો માટે ઓપ્ટિમાઇઝેશનને અનુકૂળ બનાવવું
મોડ્યુલ ગ્રાફ્સને ઓપ્ટિમાઇઝ કરતી વખતે, તે વૈશ્વિક સંદર્ભને ધ્યાનમાં લેવું મહત્વપૂર્ણ છે જેમાં તમારી એપ્લિકેશનનો ઉપયોગ કરવામાં આવશે. નેટવર્કની સ્થિતિ, ઉપકરણની ક્ષમતાઓ અને વપરાશકર્તાની જનસાंख्यિકી જેવા પરિબળો વિવિધ ઓપ્ટિમાઇઝેશન તકનીકોની અસરકારકતાને પ્રભાવિત કરી શકે છે.
ઉભરતા બજારો: મર્યાદિત બેન્ડવિડ્થ અને જૂના ઉપકરણોવાળા પ્રદેશોમાં, બંડલનું કદ ઘટાડવું અને પર્ફોર્મન્સ માટે ઓપ્ટિમાઇઝ કરવું ખાસ કરીને નિર્ણાયક છે. વધુ આક્રમક કોડ સ્પ્લિટિંગ, ઇમેજ ઓપ્ટિમાઇઝેશન અને લેઝી લોડિંગ તકનીકોનો ઉપયોગ કરવાનું વિચારો.
વૈશ્વિક એપ્લિકેશન્સ: વૈશ્વિક પ્રેક્ષકોવાળી એપ્લિકેશનો માટે, વિશ્વભરના વપરાશકર્તાઓને તમારી અસ્કયામતોનું વિતરણ કરવા માટે કન્ટેન્ટ ડિલિવરી નેટવર્ક (CDN) નો ઉપયોગ કરવાનું વિચારો. આ લેટન્સીને નોંધપાત્ર રીતે ઘટાડી શકે છે અને લોડિંગ સમય સુધારી શકે છે.
ઍક્સેસિબિલિટી: ખાતરી કરો કે તમારા ઓપ્ટિમાઇઝેશન ઍક્સેસિબિલિટી પર નકારાત્મક અસર ન કરે. ઉદાહરણ તરીકે, લેઝી લોડિંગ ઇમેજીસમાં વિકલાંગ વપરાશકર્તાઓ માટે યોગ્ય ફોલબેક કન્ટેન્ટ શામેલ હોવું જોઈએ.
નિષ્કર્ષ
જાવાસ્ક્રિપ્ટ મોડ્યુલ ગ્રાફને ઓપ્ટિમાઇઝ કરવું એ ફ્રન્ટ-એન્ડ ડેવલપમેન્ટનું એક મહત્ત્વનું પાસું છે. ડિપેન્ડન્સીને સરળ બનાવીને, સર્ક્યુલર ડિપેન્ડન્સી દૂર કરીને અને કોડ સ્પ્લિટિંગ લાગુ કરીને, તમે બિલ્ડ પર્ફોર્મન્સમાં નોંધપાત્ર સુધારો કરી શકો છો, બંડલનું કદ ઘટાડી શકો છો અને એપ્લિકેશન લોડિંગ સમયને વધારી શકો છો. સુધારણા માટેના ક્ષેત્રોને ઓળખવા માટે નિયમિતપણે તમારા બંડલના કદ અને પર્ફોર્મન્સનું વિશ્લેષણ કરો અને તમારી ઓપ્ટિમાઇઝેશન વ્યૂહરચનાઓને તે વૈશ્વિક સંદર્ભમાં અનુકૂળ બનાવો જેમાં તમારી એપ્લિકેશનનો ઉપયોગ કરવામાં આવશે. યાદ રાખો કે ઓપ્ટિમાઇઝેશન એક સતત પ્રક્રિયા છે, અને શ્રેષ્ઠ પરિણામો પ્રાપ્ત કરવા માટે સતત દેખરેખ અને સુધારણા આવશ્યક છે.
આ તકનીકોને સતત લાગુ કરીને, વિશ્વભરના ડેવલપર્સ વધુ ઝડપી, વધુ કાર્યક્ષમ અને વધુ વપરાશકર્તા-મૈત્રીપૂર્ણ વેબ એપ્લિકેશન્સ બનાવી શકે છે.