ಆಧುನಿಕ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ ಸ್ಟೇಟ್ ಟ್ರಾನ್ಸ್ಫರ್ ಅನ್ನು ಉತ್ತಮಗೊಳಿಸಲು, ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಲು ಮತ್ತು ಬಳಕೆದಾರರ ಅನುಭವವನ್ನು ಹೆಚ್ಚಿಸಲು ರಿಯಾಕ್ಟ್ ಸರ್ವರ್ ಕಾಂಪೊನೆಂಟ್ ಸೀರಿಯಲೈಸೇಶನ್ ತಂತ್ರಗಳ ಆಳವಾದ ವಿಶ್ಲೇಷಣೆ.
ರಿಯಾಕ್ಟ್ ಸರ್ವರ್ ಕಾಂಪೊನೆಂಟ್ ಸೀರಿಯಲೈಸೇಶನ್: ಕಾರ್ಯಕ್ಷಮತೆಗಾಗಿ ಸ್ಟೇಟ್ ಟ್ರಾನ್ಸ್ಫರ್ ಅನ್ನು ಉತ್ತಮಗೊಳಿಸುವುದು
ರಿಯಾಕ್ಟ್ ಸರ್ವರ್ ಕಾಂಪೊನೆಂಟ್ಸ್ (RSCs) ನಾವು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನಿರ್ಮಿಸುವ ರೀತಿಯಲ್ಲಿ ಒಂದು ಮಾದರಿ ಬದಲಾವಣೆಯನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತವೆ. ಅವು ಸುಧಾರಿತ ಕಾರ್ಯಕ್ಷಮತೆ, ಕಡಿಮೆ ಕ್ಲೈಂಟ್-ಸೈಡ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಮತ್ತು ವರ್ಧಿತ ಡೆವಲಪರ್ ಅನುಭವದ ಭರವಸೆಯನ್ನು ನೀಡುತ್ತವೆ. ಆದಾಗ್ಯೂ, ಈ ಪ್ರಯೋಜನಗಳನ್ನು ಅರಿತುಕೊಳ್ಳಲು ಆಧಾರವಾಗಿರುವ ಕಾರ್ಯವಿಧಾನಗಳ ಸಂಪೂರ್ಣ ತಿಳುವಳಿಕೆ ಅಗತ್ಯವಿದೆ, ವಿಶೇಷವಾಗಿ ಸರ್ವರ್ ಮತ್ತು ಕ್ಲೈಂಟ್ ನಡುವೆ ಡೇಟಾವನ್ನು ಹೇಗೆ ವರ್ಗಾಯಿಸಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ನಿಯಂತ್ರಿಸುವ ಸೀರಿಯಲೈಸೇಶನ್ ಪ್ರಕ್ರಿಯೆ. ಈ ಲೇಖನವು ರಿಯಾಕ್ಟ್ ಸರ್ವರ್ ಕಾಂಪೊನೆಂಟ್ ಸೀರಿಯಲೈಸೇಶನ್ನ ಸಮಗ್ರ ಪರಿಶೋಧನೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ, ಸ್ಟೇಟ್ ಟ್ರಾನ್ಸ್ಫರ್ ಅನ್ನು ಉತ್ತಮಗೊಳಿಸುವ ಮತ್ತು ಅಂತಿಮವಾಗಿ ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸುವ ತಂತ್ರಗಳ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುತ್ತದೆ.
ರಿಯಾಕ್ಟ್ ಸರ್ವರ್ ಕಾಂಪೊನೆಂಟ್ಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು
ಸಾಂಪ್ರದಾಯಿಕ ರಿಯಾಕ್ಟ್ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಹೆಚ್ಚಾಗಿ ಕ್ಲೈಂಟ್-ಸೈಡ್ ರೆಂಡರಿಂಗ್ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿವೆ. ಸರ್ವರ್ ಕನಿಷ್ಠ HTML ಕಳುಹಿಸುತ್ತದೆ, ಮತ್ತು ಬ್ರೌಸರ್ ಡೇಟಾ ಫೆಚಿಂಗ್, ರೆಂಡರಿಂಗ್ ಮತ್ತು ಇಂಟರಾಕ್ಟಿವಿಟಿಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ಈ ವಿಧಾನವು ಕಾರ್ಯಕ್ಷಮತೆಯ ಅಡಚಣೆಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು, ವಿಶೇಷವಾಗಿ ಆರಂಭಿಕ ಪುಟ ಲೋಡ್ ಮತ್ತು ದೊಡ್ಡ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಬಂಡಲ್ಗಳೊಂದಿಗೆ ಸಂಕೀರ್ಣ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ.
ರಿಯಾಕ್ಟ್ ಸರ್ವರ್ ಕಾಂಪೊನೆಂಟ್ಗಳು ಸರ್ವರ್ನಲ್ಲಿ ಕಾಂಪೊನೆಂಟ್ಗಳನ್ನು ರೆಂಡರ್ ಮಾಡಲು ಅನುಮತಿಸುವ ಮೂಲಕ ಈ ಸವಾಲುಗಳನ್ನು ಪರಿಹರಿಸುತ್ತವೆ. ಇದು ಹಲವಾರು ಪ್ರಮುಖ ಪ್ರಯೋಜನಗಳನ್ನು ನೀಡುತ್ತದೆ:
- ಕಡಿಮೆ ಕ್ಲೈಂಟ್-ಸೈಡ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್: RSC ಗಳು ಸರ್ವರ್ನಲ್ಲಿ ಡೇಟಾವನ್ನು ಪಡೆದುಕೊಳ್ಳಬಹುದು ಮತ್ತು ಗಣನೆಗಳನ್ನು ಮಾಡಬಹುದು, ಇದರಿಂದ ಬ್ರೌಸರ್ಗೆ ಡೌನ್ಲೋಡ್ ಮತ್ತು ಎಕ್ಸಿಕ್ಯೂಟ್ ಮಾಡಬೇಕಾದ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಪ್ರಮಾಣವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
- ಸುಧಾರಿತ ಕಾರ್ಯಕ್ಷಮತೆ: ಸರ್ವರ್-ಸೈಡ್ ರೆಂಡರಿಂಗ್ ಆರಂಭಿಕ ಪುಟ ಲೋಡ್ ಸಮಯವನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಸುಧಾರಿಸಬಹುದು, ಇದು ಉತ್ತಮ ಬಳಕೆದಾರ ಅನುಭವಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ.
- ವರ್ಧಿತ SEO: ಸರ್ಚ್ ಇಂಜಿನ್ ಕ್ರಾಲರ್ಗಳು ಸರ್ವರ್-ರೆಂಡರ್ ಮಾಡಿದ ವಿಷಯವನ್ನು ಸುಲಭವಾಗಿ ಇಂಡೆಕ್ಸ್ ಮಾಡಬಹುದು, ಸರ್ಚ್ ಇಂಜಿನ್ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ಸುಧಾರಿಸುತ್ತದೆ.
- ಸರ್ವರ್-ಸೈಡ್ ಸಂಪನ್ಮೂಲಗಳಿಗೆ ಪ್ರವೇಶ: RSC ಗಳು ಡೇಟಾಬೇಸ್ಗಳು ಮತ್ತು ಫೈಲ್ ಸಿಸ್ಟಮ್ಗಳಂತಹ ಸರ್ವರ್-ಸೈಡ್ ಸಂಪನ್ಮೂಲಗಳಿಗೆ ನೇರ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿವೆ, ಡೇಟಾ ಫೆಚಿಂಗ್ ಅನ್ನು ಸರಳಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಸಂಕೀರ್ಣ API ಗಳ ಅಗತ್ಯವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
RSC ಗಳಲ್ಲಿ ಸೀರಿಯಲೈಸೇಶನ್ ಪಾತ್ರ
ಸೀರಿಯಲೈಸೇಶನ್ ಎನ್ನುವುದು ಡೇಟಾ ರಚನೆಗಳನ್ನು ಅಥವಾ ಆಬ್ಜೆಕ್ಟ್ ಸ್ಟೇಟ್ ಅನ್ನು ಸಂಗ್ರಹಿಸಲು ಅಥವಾ ರವಾನಿಸಲು ಮತ್ತು ನಂತರ ಪುನರ್ನಿರ್ಮಿಸಲು ಸಾಧ್ಯವಾಗುವ ಫಾರ್ಮ್ಯಾಟ್ಗೆ ಪರಿವರ್ತಿಸುವ ಪ್ರಕ್ರಿಯೆಯಾಗಿದೆ. ರಿಯಾಕ್ಟ್ ಸರ್ವರ್ ಕಾಂಪೊನೆಂಟ್ಗಳ ಸಂದರ್ಭದಲ್ಲಿ, ಸರ್ವರ್-ರೆಂಡರ್ ಮಾಡಿದ ಕಾಂಪೊನೆಂಟ್ಗಳಿಂದ ಕ್ಲೈಂಟ್ಗೆ ಡೇಟಾವನ್ನು ವರ್ಗಾಯಿಸುವಲ್ಲಿ ಸೀರಿಯಲೈಸೇಶನ್ ನಿರ್ಣಾಯಕ ಪಾತ್ರವನ್ನು ವಹಿಸುತ್ತದೆ. ಈ ಡೇಟಾವನ್ನು ಕ್ಲೈಂಟ್-ಸೈಡ್ ಕಾಂಪೊನೆಂಟ್ಗಳನ್ನು "ಹೈಡ್ರೇಟ್" ಮಾಡಲು ಬಳಸಲಾಗುತ್ತದೆ, ಅವುಗಳನ್ನು ಸಂವಾದಾತ್ಮಕವಾಗಿಸುತ್ತದೆ.
ಸೀರಿಯಲೈಸೇಶನ್ ಪ್ರಕ್ರಿಯೆಯು ರಿಯಾಕ್ಟ್ ಎಲಿಮೆಂಟ್ಸ್ ಮತ್ತು ಪ್ರಾಪ್ಸ್ಗಳನ್ನು ನೆಟ್ವರ್ಕ್ ಮೂಲಕ ಕಳುಹಿಸಬಹುದಾದ ಸ್ಟ್ರಿಂಗ್ ಪ್ರಾತಿನಿಧ್ಯಕ್ಕೆ ಪರಿವರ್ತಿಸುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ನಂತರ ಕ್ಲೈಂಟ್ ಈ ಸ್ಟ್ರಿಂಗ್ ಪ್ರಾತಿನಿಧ್ಯವನ್ನು ಡಿಸೀರಿಯಲೈಸ್ ಮಾಡಿ ರಿಯಾಕ್ಟ್ ಎಲಿಮೆಂಟ್ಸ್ ಮತ್ತು ಪ್ರಾಪ್ಸ್ಗಳನ್ನು ಪುನರ್ನಿರ್ಮಿಸುತ್ತದೆ. ಈ ಸೀರಿಯಲೈಸೇಶನ್ ಮತ್ತು ಡಿಸೀರಿಯಲೈಸೇಶನ್ ಪ್ರಕ್ರಿಯೆಯ ದಕ್ಷತೆಯು ಅಪ್ಲಿಕೇಶನ್ನ ಒಟ್ಟಾರೆ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮೇಲೆ ನೇರವಾಗಿ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ.
ಸೀರಿಯಲೈಸೇಶನ್ ತಂತ್ರಗಳು ಮತ್ತು ಆಪ್ಟಿಮೈಸೇಶನ್ ತಂತ್ರಗಳು
ರಿಯಾಕ್ಟ್ ಸರ್ವರ್ ಕಾಂಪೊನೆಂಟ್ ಸೀರಿಯಲೈಸೇಶನ್ನ ದಕ್ಷತೆಯನ್ನು ಸುಧಾರಿಸಲು ಹಲವಾರು ತಂತ್ರಗಳು ಮತ್ತು ಆಪ್ಟಿಮೈಸೇಶನ್ ತಂತ್ರಗಳನ್ನು ಬಳಸಬಹುದು:
1. ಡೇಟಾ ವರ್ಗಾವಣೆಯನ್ನು ಕಡಿಮೆಗೊಳಿಸುವುದು
ಸೀರಿಯಲೈಸೇಶನ್ ಅನ್ನು ಉತ್ತಮಗೊಳಿಸಲು ಅತ್ಯಂತ ಪರಿಣಾಮಕಾರಿ ಮಾರ್ಗವೆಂದರೆ ಸರ್ವರ್ ಮತ್ತು ಕ್ಲೈಂಟ್ ನಡುವೆ ವರ್ಗಾಯಿಸಬೇಕಾದ ಡೇಟಾದ ಪ್ರಮಾಣವನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು. ಇದನ್ನು ಹಲವಾರು ತಂತ್ರಗಳ ಮೂಲಕ ಸಾಧಿಸಬಹುದು:
- ಡೇಟಾ ಶೇಪಿಂಗ್: ಕಾಂಪೊನೆಂಟ್ ಅನ್ನು ರೆಂಡರ್ ಮಾಡಲು ಕಟ್ಟುನಿಟ್ಟಾಗಿ ಅಗತ್ಯವಿರುವ ಡೇಟಾವನ್ನು ಮಾತ್ರ ಪಡೆದುಕೊಳ್ಳಿ ಮತ್ತು ಸೀರಿಯಲೈಸ್ ಮಾಡಿ. ಬಳಸದ ಡೇಟಾವನ್ನು ಅತಿಯಾಗಿ ಪಡೆದುಕೊಳ್ಳುವುದನ್ನು ತಪ್ಪಿಸಿ. ನಿಖರವಾದ ಡೇಟಾ ಫೆಚಿಂಗ್ ಸಾಧಿಸಲು GraphQL ಒಂದು ಶಕ್ತಿಯುತ ಸಾಧನವಾಗಿದೆ.
- ಡೇಟಾ ರೂಪಾಂತರ: ಸೀರಿಯಲೈಸೇಶನ್ಗೆ ಮೊದಲು ಸರ್ವರ್ನಲ್ಲಿ ಡೇಟಾವನ್ನು ಅದರ ಗಾತ್ರವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ರೂಪಾಂತರಿಸಿ. ಇದು ಡೇಟಾವನ್ನು ಸಂಕುಚಿತಗೊಳಿಸುವುದು, ಅನಗತ್ಯ ಫೀಲ್ಡ್ಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು, ಅಥವಾ ಡೇಟಾ ಪ್ರಕಾರಗಳನ್ನು ಪರಿವರ್ತಿಸುವುದನ್ನು ಒಳಗೊಂಡಿರಬಹುದು. ಉದಾಹರಣೆಗೆ, ಪೂರ್ಣ ಟೈಮ್ಸ್ಟ್ಯಾಂಪ್ ಅನ್ನು ಸಾಪೇಕ್ಷ ಸಮಯಕ್ಕೆ ("2 ಗಂಟೆಗಳ ಹಿಂದೆ") ಪರಿವರ್ತಿಸುವುದರಿಂದ ಡೇಟಾ ಗಾತ್ರವನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಕಡಿಮೆ ಮಾಡಬಹುದು.
- ಕ್ಯಾಶಿಂಗ್: ಪುನರಾವರ್ತಿತ ಡೇಟಾ ಫೆಚಿಂಗ್ ಮತ್ತು ಸೀರಿಯಲೈಸೇಶನ್ ಅನ್ನು ತಪ್ಪಿಸಲು ಸರ್ವರ್ ಮತ್ತು ಕ್ಲೈಂಟ್ ಎರಡರಲ್ಲೂ ಕ್ಯಾಶಿಂಗ್ ತಂತ್ರಗಳನ್ನು ಅಳವಡಿಸಿ. ಸರ್ವರ್-ಸೈಡ್ ಕ್ಯಾಶಿಂಗ್ಗೆ Redis ಅಥವಾ Memcached ನಂತಹ ಸಾಧನಗಳನ್ನು ಬಳಸಬಹುದು, ಆದರೆ ಕ್ಲೈಂಟ್-ಸೈಡ್ ಕ್ಯಾಶಿಂಗ್ಗೆ ಬ್ರೌಸರ್ನ ಅಂತರ್ನಿರ್ಮಿತ ಕ್ಯಾಶಿಂಗ್ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಬಳಸಿಕೊಳ್ಳಬಹುದು.
2. ಸಮರ್ಥ ಡೇಟಾ ರಚನೆಗಳು
ಡೇಟಾ ರಚನೆಗಳ ಆಯ್ಕೆಯು ಸೀರಿಯಲೈಸೇಶನ್ ದಕ್ಷತೆಯ ಮೇಲೆ ಗಮನಾರ್ಹವಾಗಿ ಪರಿಣಾಮ ಬೀರಬಹುದು. ಹೆಚ್ಚು ಸಾಂದ್ರವಾದ ಡೇಟಾ ರಚನೆಗಳನ್ನು ಬಳಸುವುದರಿಂದ ಸೀರಿಯಲೈಸ್ ಮಾಡಿದ ಡೇಟಾದ ಒಟ್ಟಾರೆ ಗಾತ್ರವನ್ನು ಕಡಿಮೆ ಮಾಡಬಹುದು.
- ಅರೇಗಳು vs. ಆಬ್ಜೆಕ್ಟ್ಗಳು: ಅರೇಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಆಬ್ಜೆಕ್ಟ್ಗಳಿಗಿಂತ ಹೆಚ್ಚು ಸಾಂದ್ರವಾಗಿರುತ್ತವೆ, ವಿಶೇಷವಾಗಿ ಅನುಕ್ರಮ ಡೇಟಾದೊಂದಿಗೆ ವ್ಯವಹರಿಸುವಾಗ. ಸಂಖ್ಯಾ ಕೀಗಳೊಂದಿಗೆ ಆಬ್ಜೆಕ್ಟ್ಗಳ ಬದಲಿಗೆ ಐಟಂಗಳ ಪಟ್ಟಿಗಳನ್ನು ಪ್ರತಿನಿಧಿಸಲು ಅರೇಗಳನ್ನು ಬಳಸುವುದನ್ನು ಪರಿಗಣಿಸಿ.
- ಇಂಟಿಜರ್ಗಳು vs. ಸ್ಟ್ರಿಂಗ್ಗಳು: ಸಾಧ್ಯವಾದಾಗಲೆಲ್ಲಾ ಸಂಖ್ಯಾ ಡೇಟಾವನ್ನು ಪ್ರತಿನಿಧಿಸಲು ಇಂಟಿಜರ್ಗಳನ್ನು ಬಳಸಿ, ಏಕೆಂದರೆ ಅವು ಸ್ಟ್ರಿಂಗ್ಗಳಿಗಿಂತ ಹೆಚ್ಚು ಸಾಂದ್ರವಾಗಿರುತ್ತವೆ.
- Enums: ಮೌಲ್ಯಗಳ ಸ್ಥಿರ ಗುಂಪನ್ನು ಪ್ರತಿನಿಧಿಸಲು enums ಬಳಸಿ. Enums ಗಳನ್ನು ಇಂಟಿಜರ್ಗಳಾಗಿ ಸೀರಿಯಲೈಸ್ ಮಾಡಬಹುದು, ಇದು ಸ್ಟ್ರಿಂಗ್ಗಳಿಗಿಂತ ಹೆಚ್ಚು ಸಮರ್ಥವಾಗಿರುತ್ತದೆ.
3. ಕಂಪ್ರೆಷನ್
ಕಂಪ್ರೆಷನ್ ಸೀರಿಯಲೈಸ್ ಮಾಡಿದ ಡೇಟಾದ ಗಾತ್ರವನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಕಡಿಮೆ ಮಾಡಬಹುದು. ಹಲವಾರು ಕಂಪ್ರೆಷನ್ ಅಲ್ಗಾರಿದಮ್ಗಳು ಲಭ್ಯವಿದೆ, ಅವುಗಳೆಂದರೆ:
- Gzip: ಹೆಚ್ಚಿನ ಬ್ರೌಸರ್ಗಳು ಮತ್ತು ಸರ್ವರ್ಗಳಿಂದ ಬೆಂಬಲಿತವಾದ ವ್ಯಾಪಕವಾಗಿ ಬಳಸಲಾಗುವ ಕಂಪ್ರೆಷನ್ ಅಲ್ಗಾರಿದಮ್.
- Brotli: Gzip ಗಿಂತ ಉತ್ತಮ ಕಂಪ್ರೆಷನ್ ಅನುಪಾತಗಳನ್ನು ನೀಡುವ ಹೆಚ್ಚು ಆಧುನಿಕ ಕಂಪ್ರೆಷನ್ ಅಲ್ಗಾರಿದಮ್.
ಸರ್ವರ್ನಲ್ಲಿ ಕಂಪ್ರೆಷನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವುದರಿಂದ ಕ್ಲೈಂಟ್ಗೆ ವರ್ಗಾಯಿಸಬೇಕಾದ ಡೇಟಾದ ಪ್ರಮಾಣವನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಕಡಿಮೆ ಮಾಡಬಹುದು. Nginx ಮತ್ತು Apache ನಂತಹ ಹೆಚ್ಚಿನ ವೆಬ್ ಸರ್ವರ್ಗಳು ಕಂಪ್ರೆಷನ್ಗೆ ಅಂತರ್ನಿರ್ಮಿತ ಬೆಂಬಲವನ್ನು ಒದಗಿಸುತ್ತವೆ.
4. ಕಸ್ಟಮ್ ಸೀರಿಯಲೈಸೇಶನ್
ಕೆಲವು ಸಂದರ್ಭಗಳಲ್ಲಿ, ಡೀಫಾಲ್ಟ್ ಸೀರಿಯಲೈಸೇಶನ್ ಕಾರ್ಯವಿಧಾನವು ನಿಮ್ಮ ನಿರ್ದಿಷ್ಟ ಡೇಟಾ ರಚನೆಗಳಿಗೆ ಅತ್ಯುತ್ತಮವಾಗಿರದೆ ಇರಬಹುದು. ಪ್ರಕ್ರಿಯೆಯನ್ನು ಉತ್ತಮಗೊಳಿಸಲು ಕಸ್ಟಮ್ ಸೀರಿಯಲೈಸೇಶನ್ ಲಾಜಿಕ್ ಅನ್ನು ಅಳವಡಿಸುವುದನ್ನು ಪರಿಗಣಿಸಿ.
- ಕಸ್ಟಮ್ `toJSON` ವಿಧಾನಗಳು: ನಿಮ್ಮ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಹೇಗೆ ಸೀರಿಯಲೈಸ್ ಮಾಡಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ನಿಯಂತ್ರಿಸಲು ಅವುಗಳ ಮೇಲೆ ಕಸ್ಟಮ್ `toJSON` ವಿಧಾನಗಳನ್ನು ಅಳವಡಿಸಿ. ಇದು ಕೆಲವು ಫೀಲ್ಡ್ಗಳನ್ನು ಹೊರಗಿಡಲು ಅಥವಾ ಸೀರಿಯಲೈಸೇಶನ್ಗೆ ಮೊದಲು ಡೇಟಾವನ್ನು ರೂಪಾಂತರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
- ಬೈನರಿ ಸೀರಿಯಲೈಸೇಶನ್: ಕಾರ್ಯಕ್ಷಮತೆ-ನಿರ್ಣಾಯಕ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗಾಗಿ, ಪ್ರೋಟೋಕಾಲ್ ಬಫರ್ಗಳು ಅಥವಾ ಅಪಾಚೆ ಥ್ರಿಫ್ಟ್ನಂತಹ ಬೈನರಿ ಸೀರಿಯಲೈಸೇಶನ್ ಫಾರ್ಮ್ಯಾಟ್ಗಳನ್ನು ಬಳಸುವುದನ್ನು ಪರಿಗಣಿಸಿ. ಈ ಫಾರ್ಮ್ಯಾಟ್ಗಳು JSON ಸೀರಿಯಲೈಸೇಶನ್ಗಿಂತ ಗಮನಾರ್ಹವಾಗಿ ಉತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ನೀಡುತ್ತವೆ, ಆದರೆ ಅವುಗಳಿಗೆ ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾದ ಸೆಟಪ್ ಮತ್ತು ನಿರ್ವಹಣೆ ಅಗತ್ಯವಿರುತ್ತದೆ.
5. ಸ್ಟ್ರೀಮಿಂಗ್ ಸೀರಿಯಲೈಸೇಶನ್
ದೊಡ್ಡ ಡೇಟಾಸೆಟ್ಗಳಿಗಾಗಿ, ಸಂಪೂರ್ಣ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಒಂದೇ ಬಾರಿಗೆ ಮೆಮೊರಿಗೆ ಲೋಡ್ ಮಾಡುವುದನ್ನು ತಪ್ಪಿಸಲು ಸ್ಟ್ರೀಮಿಂಗ್ ಸೀರಿಯಲೈಸೇಶನ್ ಬಳಸುವುದನ್ನು ಪರಿಗಣಿಸಿ. ಸ್ಟ್ರೀಮಿಂಗ್ ಸೀರಿಯಲೈಸೇಶನ್ ನಿಮಗೆ ಡೇಟಾವನ್ನು ತುಂಡುಗಳಲ್ಲಿ ಸೀರಿಯಲೈಸ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ, ಇದು ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಬಹುದು ಮತ್ತು ಮೆಮೊರಿ ಬಳಕೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಬಹುದು.
6. ಭಾಗಶಃ ಹೈಡ್ರೇಶನ್ ಮತ್ತು ಆಯ್ದ ಹೈಡ್ರೇಶನ್
ಎಲ್ಲಾ ಕಾಂಪೊನೆಂಟ್ಗಳಿಗೆ ಹೈಡ್ರೇಶನ್ ಅಗತ್ಯವಿಲ್ಲ. ಅನಗತ್ಯ ಹೈಡ್ರೇಶನ್ ಅನ್ನು ಗುರುತಿಸುವುದು ಮತ್ತು ತಪ್ಪಿಸುವುದು ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ನಾಟಕೀಯವಾಗಿ ಸುಧಾರಿಸಬಹುದು. ಭಾಗಶಃ ಹೈಡ್ರೇಶನ್ ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ನ ಸಂವಾದಾತ್ಮಕ ಭಾಗಗಳನ್ನು ಮಾತ್ರ ಹೈಡ್ರೇಟ್ ಮಾಡುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಸ್ಥಿರ ಭಾಗಗಳನ್ನು ಹೈಡ್ರೇಟ್ ಮಾಡದೆ ಬಿಡುತ್ತದೆ. ಆಯ್ದ ಹೈಡ್ರೇಶನ್ ಇದನ್ನು ಒಂದು ಹೆಜ್ಜೆ ಮುಂದೆ ತೆಗೆದುಕೊಂಡು, ಯಾವ ಕಾಂಪೊನೆಂಟ್ಗಳನ್ನು ಮತ್ತು ಯಾವಾಗ ಹೈಡ್ರೇಟ್ ಮಾಡಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ನಿಖರವಾಗಿ ನಿಯಂತ್ರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
ಕೋಡ್ ಉದಾಹರಣೆಗಳು ಮತ್ತು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು
ಈ ಕೆಲವು ತಂತ್ರಗಳನ್ನು ಪ್ರಾಯೋಗಿಕ ಕೋಡ್ ಉದಾಹರಣೆಗಳೊಂದಿಗೆ ವಿವರಿಸೋಣ.
ಉದಾಹರಣೆ 1: GraphQL ನೊಂದಿಗೆ ಡೇಟಾ ಶೇಪಿಂಗ್
ಸಂಪೂರ್ಣ ಬಳಕೆದಾರ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಪಡೆದುಕೊಳ್ಳುವ ಬದಲು, ಹೆಸರು ಮತ್ತು ಇಮೇಲ್ ಅನ್ನು ಮಾತ್ರ ಪಡೆದುಕೊಳ್ಳಿ:
GraphQL ಇಲ್ಲದೆ:
// Fetch the entire user object
const user = await fetch('/api/users/123');
GraphQL ನೊಂದಿಗೆ:
// Fetch only the name and email
const query = `
query {
user(id: "123") {
name
email
}
}
`;
const result = await fetch('/graphql', {
method: 'POST',
body: JSON.stringify({ query }),
});
const user = await result.json();
ಉದಾಹರಣೆ 2: ಡೇಟಾ ರೂಪಾಂತರ
ಸರ್ವರ್ನಲ್ಲಿ ಪೂರ್ಣ ಟೈಮ್ಸ್ಟ್ಯಾಂಪ್ ಅನ್ನು ಸಾಪೇಕ್ಷ ಸಮಯಕ್ಕೆ ಪರಿವರ್ತಿಸುವುದು:
function timeAgo(timestamp) {
const now = new Date();
const diff = now.getTime() - new Date(timestamp).getTime();
const seconds = Math.floor(diff / 1000);
const minutes = Math.floor(seconds / 60);
const hours = Math.floor(minutes / 60);
const days = Math.floor(hours / 24);
if (days > 0) {
return `${days} days ago`;
} else if (hours > 0) {
return `${hours} hours ago`;
} else if (minutes > 0) {
return `${minutes} minutes ago`;
} else {
return 'Just now';
}
}
// In your server component
const post = {
title: 'Example Post',
content: '...',
createdAt: timeAgo('2024-01-01T12:00:00Z') // Transform the timestamp
};
ಉದಾಹರಣೆ 3: ಕಸ್ಟಮ್ `toJSON` ವಿಧಾನ
class User {
constructor(id, name, email, password) {
this.id = id;
this.name = name;
this.email = email;
this.password = password; // We don't want to serialize the password
}
toJSON() {
return {
id: this.id,
name: this.name,
email: this.email,
};
}
}
const user = new User(123, 'John Doe', 'john.doe@example.com', 'secret');
const serializedUser = JSON.stringify(user); // The password will not be included
ಆಪ್ಟಿಮೈಸೇಶನ್ಗಾಗಿ ಪರಿಕರಗಳು ಮತ್ತು ಲೈಬ್ರರಿಗಳು
ಹಲವಾರು ಪರಿಕರಗಳು ಮತ್ತು ಲೈಬ್ರರಿಗಳು ರಿಯಾಕ್ಟ್ ಸರ್ವರ್ ಕಾಂಪೊನೆಂಟ್ ಸೀರಿಯಲೈಸೇಶನ್ ಅನ್ನು ಉತ್ತಮಗೊಳಿಸಲು ನಿಮಗೆ ಸಹಾಯ ಮಾಡಬಹುದು:
- GraphQL ಕ್ಲೈಂಟ್ಗಳು (ಉದಾ., Apollo Client, Relay): ಸಮರ್ಥ ಡೇಟಾ ಫೆಚಿಂಗ್ ಮತ್ತು ಶೇಪಿಂಗ್ಗಾಗಿ.
- ಕಂಪ್ರೆಷನ್ ಲೈಬ್ರರಿಗಳು (ಉದಾ., Node.js ನಲ್ಲಿ `zlib`): ಸರ್ವರ್ನಲ್ಲಿ ಡೇಟಾವನ್ನು ಸಂಕುಚಿತಗೊಳಿಸಲು.
- ಸೀರಿಯಲೈಸೇಶನ್ ಲೈಬ್ರರಿಗಳು (ಉದಾ., Protocol Buffers, Apache Thrift): ಬೈನರಿ ಸೀರಿಯಲೈಸೇಶನ್ಗಾಗಿ.
- ಪ್ರೊಫೈಲಿಂಗ್ ಪರಿಕರಗಳು (ಉದಾ., React DevTools): ಸೀರಿಯಲೈಸೇಶನ್ಗೆ ಸಂಬಂಧಿಸಿದ ಕಾರ್ಯಕ್ಷಮತೆಯ ಅಡಚಣೆಗಳನ್ನು ಗುರುತಿಸಲು.
ಜಾಗತಿಕ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗಾಗಿ ಪರಿಗಣನೆಗಳು
ಜಾಗತಿಕ ಪ್ರೇಕ್ಷಕರಿಗಾಗಿ ರಿಯಾಕ್ಟ್ ಸರ್ವರ್ ಕಾಂಪೊನೆಂಟ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವಾಗ, ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಪರಿಗಣಿಸುವುದು ನಿರ್ಣಾಯಕವಾಗಿದೆ:
- ಸ್ಥಳೀಕರಣ (Localization): ನಿಮ್ಮ ಸೀರಿಯಲೈಸೇಶನ್ ಪ್ರಕ್ರಿಯೆಯು ಸ್ಥಳೀಕರಿಸಿದ ಡೇಟಾವನ್ನು ಸರಿಯಾಗಿ ನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ವಿವಿಧ ಭಾಷೆಗಳು ಮತ್ತು ಪ್ರದೇಶಗಳಿಗೆ ಸೂಕ್ತವಾದ ಡೇಟಾ ಪ್ರಕಾರಗಳು ಮತ್ತು ಸ್ವರೂಪಗಳನ್ನು ಬಳಸಿ.
- ಸಮಯ ವಲಯಗಳು (Time Zones): ಟೈಮ್ಸ್ಟ್ಯಾಂಪ್ಗಳನ್ನು ಸೀರಿಯಲೈಸ್ ಮಾಡುವಾಗ ಸಮಯ ವಲಯಗಳ ಬಗ್ಗೆ ಗಮನವಿರಲಿ. ಸೀರಿಯಲೈಸೇಶನ್ಗೆ ಮೊದಲು ಟೈಮ್ಸ್ಟ್ಯಾಂಪ್ಗಳನ್ನು ಸ್ಥಿರ ಸಮಯ ವಲಯಕ್ಕೆ (ಉದಾ., UTC) ಪರಿವರ್ತಿಸಿ ಮತ್ತು ಅವುಗಳನ್ನು ಕ್ಲೈಂಟ್ನಲ್ಲಿ ಬಳಕೆದಾರರ ಸ್ಥಳೀಯ ಸಮಯ ವಲಯದಲ್ಲಿ ಪ್ರದರ್ಶಿಸಿ.
- ಕರೆನ್ಸಿ ಸ್ವರೂಪಗಳು (Currency Formats): ವಿವಿಧ ಪ್ರದೇಶಗಳಿಗೆ ಸೂಕ್ತವಾದ ಕರೆನ್ಸಿ ಸ್ವರೂಪಗಳನ್ನು ಬಳಸಿ. ಬಳಕೆದಾರರ ಲೊಕೇಲ್ ಪ್ರಕಾರ ಕರೆನ್ಸಿ ಮೌಲ್ಯಗಳನ್ನು ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಲು `Intl.NumberFormat` ನಂತಹ ಲೈಬ್ರರಿಯನ್ನು ಬಳಸುವುದನ್ನು ಪರಿಗಣಿಸಿ.
- ನೆಟ್ವರ್ಕ್ ಲೇಟೆನ್ಸಿ: ನೆಟ್ವರ್ಕ್ ಲೇಟೆನ್ಸಿಯ ಪ್ರಭಾವವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ನಿಮ್ಮ ಸೀರಿಯಲೈಸೇಶನ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಉತ್ತಮಗೊಳಿಸಿ. ನೆಟ್ವರ್ಕ್ ಮೂಲಕ ವರ್ಗಾಯಿಸಬೇಕಾದ ಡೇಟಾದ ಪ್ರಮಾಣವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಕಂಪ್ರೆಷನ್, ಕ್ಯಾಶಿಂಗ್ ಮತ್ತು ಇತರ ತಂತ್ರಗಳನ್ನು ಬಳಸಿ. ವಿಶ್ವದ ವಿವಿಧ ಭಾಗಗಳಲ್ಲಿನ ಬಳಕೆದಾರರಿಗೆ ಲೇಟೆನ್ಸಿಯನ್ನು ಕಡಿಮೆ ಮಾಡಲು ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಬಹು ಪ್ರದೇಶಗಳಲ್ಲಿ ನಿಯೋಜಿಸುವುದನ್ನು ಪರಿಗಣಿಸಿ.
ಉದಾಹರಣೆ: ದಿನಾಂಕಗಳು ಮತ್ತು ಸಮಯಗಳನ್ನು ಜಾಗತಿಕವಾಗಿ ನಿರ್ವಹಿಸುವುದು
ಜಾಗತಿಕ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ದಿನಾಂಕಗಳು ಮತ್ತು ಸಮಯಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ಅವುಗಳನ್ನು ನೇರವಾಗಿ ಸ್ಟ್ರಿಂಗ್ಗಳಾಗಿ ಸಂಗ್ರಹಿಸುವುದನ್ನು ತಪ್ಪಿಸಿ. ಬದಲಿಗೆ, ಅವುಗಳನ್ನು UTC ಟೈಮ್ಸ್ಟ್ಯಾಂಪ್ಗಳಾಗಿ (ಯುನಿಕ್ಸ್ ಯುಗದ ನಂತರದ ಮಿಲಿಸೆಕೆಂಡುಗಳು) ಸಂಗ್ರಹಿಸಿ. ಇದು ವಿಭಿನ್ನ ಸಮಯ ವಲಯಗಳು ಮತ್ತು ಲೊಕೇಲ್ಗಳಲ್ಲಿ ಸ್ಥಿರತೆಯನ್ನು ಖಾತ್ರಿಗೊಳಿಸುತ್ತದೆ. ನಂತರ, ಕ್ಲೈಂಟ್ ಸೈಡ್ನಲ್ಲಿ ಬಳಕೆದಾರರ ಲೊಕೇಲ್ ಪ್ರಕಾರ ದಿನಾಂಕ ಮತ್ತು ಸಮಯವನ್ನು ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಲು `Intl.DateTimeFormat` ನಂತಹ ಲೈಬ್ರರಿಯನ್ನು ಬಳಸಿ.
// Server-side (Node.js)
const now = new Date();
const utcTimestamp = now.getTime(); // Store as UTC timestamp
// Client-side (React)
const date = new Date(utcTimestamp);
const formatter = new Intl.DateTimeFormat(userLocale, {
year: 'numeric',
month: 'long',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
timeZone: userTimeZone // User's local time zone
});
const formattedDate = formatter.format(date);
ರಿಯಾಕ್ಟ್ ಸರ್ವರ್ ಕಾಂಪೊನೆಂಟ್ ಸೀರಿಯಲೈಸೇಶನ್ನ ಭವಿಷ್ಯ
ರಿಯಾಕ್ಟ್ ಸರ್ವರ್ ಕಾಂಪೊನೆಂಟ್ಗಳ ಕ್ಷೇತ್ರವು ನಿರಂತರವಾಗಿ ವಿಕಸನಗೊಳ್ಳುತ್ತಿದೆ. ತಂತ್ರಜ್ಞಾನವು ಪ್ರಬುದ್ಧವಾಗುತ್ತಿದ್ದಂತೆ, ಸೀರಿಯಲೈಸೇಶನ್ ತಂತ್ರಗಳಲ್ಲಿ ಮತ್ತಷ್ಟು ಪ್ರಗತಿಯನ್ನು ನಾವು ನಿರೀಕ್ಷಿಸಬಹುದು.
- ಸ್ವಯಂಚಾಲಿತ ಆಪ್ಟಿಮೈಸೇಶನ್: ರಿಯಾಕ್ಟ್ನ ಭವಿಷ್ಯದ ಆವೃತ್ತಿಗಳು ಸೀರಿಯಲೈಸೇಶನ್ನ ಸ್ವಯಂಚಾಲಿತ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ಒಳಗೊಂಡಿರಬಹುದು, ಹಸ್ತಚಾಲಿತ ಟ್ಯೂನಿಂಗ್ನ ಅಗತ್ಯವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
- ಸುಧಾರಿತ ಟೂಲಿಂಗ್: ಉತ್ತಮ ಪ್ರೊಫೈಲಿಂಗ್ ಮತ್ತು ಡೀಬಗ್ಗಿಂಗ್ ಪರಿಕರಗಳು ಡೆವಲಪರ್ಗಳಿಗೆ ಸೀರಿಯಲೈಸೇಶನ್ಗೆ ಸಂಬಂಧಿಸಿದ ಕಾರ್ಯಕ್ಷಮತೆಯ ಅಡಚಣೆಗಳನ್ನು ಗುರುತಿಸಲು ಮತ್ತು ಪರಿಹರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
- ಎಡ್ಜ್ ಕಂಪ್ಯೂಟಿಂಗ್ನೊಂದಿಗೆ ಏಕೀಕರಣ: ಎಡ್ಜ್ ಕಂಪ್ಯೂಟಿಂಗ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳು ರಿಯಾಕ್ಟ್ ಸರ್ವರ್ ಕಾಂಪೊನೆಂಟ್ಗಳ ವಿತರಣೆಯನ್ನು ಉತ್ತಮಗೊಳಿಸುವಲ್ಲಿ ಹೆಚ್ಚು ಪ್ರಮುಖ ಪಾತ್ರವನ್ನು ವಹಿಸುತ್ತವೆ.
ತೀರ್ಮಾನ
ಈ ಹೊಸ ಆರ್ಕಿಟೆಕ್ಚರ್ನಿಂದ ಭರವಸೆ ನೀಡಲಾದ ಕಾರ್ಯಕ್ಷಮತೆಯ ಪ್ರಯೋಜನಗಳನ್ನು ಸಾಧಿಸಲು ರಿಯಾಕ್ಟ್ ಸರ್ವರ್ ಕಾಂಪೊನೆಂಟ್ ಸೀರಿಯಲೈಸೇಶನ್ ಅನ್ನು ಉತ್ತಮಗೊಳಿಸುವುದು ನಿರ್ಣಾಯಕವಾಗಿದೆ. ಡೇಟಾ ವರ್ಗಾವಣೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುವ ಮೂಲಕ, ಸಮರ್ಥ ಡೇಟಾ ರಚನೆಗಳನ್ನು ಬಳಸುವ ಮೂಲಕ, ಕಂಪ್ರೆಷನ್ ಅನ್ನು ಬಳಸಿಕೊಳ್ಳುವ ಮೂಲಕ, ಮತ್ತು ಜಾಗತಿಕ ಅಪ್ಲಿಕೇಶನ್ ಅವಶ್ಯಕತೆಗಳನ್ನು ಪರಿಗಣಿಸುವ ಮೂಲಕ, ನಿಮ್ಮ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ನೀವು ಗಮನಾರ್ಹವಾಗಿ ಸುಧಾರಿಸಬಹುದು ಮತ್ತು ಉತ್ತಮ ಬಳಕೆದಾರ ಅನುಭವವನ್ನು ಒದಗಿಸಬಹುದು. ಸೀರಿಯಲೈಸೇಶನ್ನ ಸೂಕ್ಷ್ಮ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳುವುದು ರಿಯಾಕ್ಟ್ನ ಭವಿಷ್ಯವನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳುವ ಡೆವಲಪರ್ಗಳಿಗೆ ಅತ್ಯಗತ್ಯವಾಗಿರುತ್ತದೆ.
ರಿಯಾಕ್ಟ್ ಪರಿಸರ ವ್ಯವಸ್ಥೆಯು ವಿಕಸನಗೊಳ್ಳುತ್ತಲೇ ಇರುವುದರಿಂದ, RSC ಗಳು ಮತ್ತು ಸೀರಿಯಲೈಸೇಶನ್ ತಂತ್ರಗಳಲ್ಲಿನ ಇತ್ತೀಚಿನ ಪ್ರಗತಿಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿ ಹೊಂದಿರುವುದು ಉನ್ನತ-ಕಾರ್ಯಕ್ಷಮತೆಯ, ಜಾಗತಿಕವಾಗಿ ಪ್ರವೇಶಿಸಬಹುದಾದ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಪ್ರಮುಖವಾಗಿರುತ್ತದೆ.