ನಿಮ್ಮ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ ಸ್ಥಿತಿಸ್ಥಾಪಕ, ಪುನರಾರಂಭಿಸಬಹುದಾದ ಡೌನ್ಲೋಡ್ಗಳನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಿ. ಈ ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿ ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ API, ಸರ್ವಿಸ್ ವರ್ಕರ್ಗಳು ಮತ್ತು ನೆಟ್ವರ್ಕ್ ಅಡಚಣೆಗಳಿದ್ದರೂ ದೊಡ್ಡ ಫೈಲ್ಗಳನ್ನು ಸರಾಗವಾಗಿ ವರ್ಗಾಯಿಸಲು ಪ್ರಾಯೋಗಿಕ ಅನುಷ್ಠಾನವನ್ನು ಒಳಗೊಂಡಿದೆ.
ಫ್ರಂಟ್ ಎಂಡ್ ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ನಲ್ಲಿ ಪ್ರಾವೀಣ್ಯತೆ: ಸ್ಥಿತಿಸ್ಥಾಪಕ, ಪುನರಾರಂಭಿಸಬಹುದಾದ ಡೌನ್ಲೋಡ್ಗಳನ್ನು ನಿರ್ಮಿಸುವುದು
ನಮ್ಮ ಹೆಚ್ಚುತ್ತಿರುವ ಸಂಪರ್ಕಿತ ಜಗತ್ತಿನಲ್ಲಿ, ವೆಬ್ ಕೇವಲ ಸ್ಥಿರ ದಾಖಲೆಗಳಿಗಾಗಿ ಇರುವ ಸ್ಥಳವಾಗಿ ಉಳಿದಿಲ್ಲ. ಇದು ಶ್ರೀಮಂತ, ಸಂವಾದಾತ್ಮಕ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗಾಗಿ ಒಂದು ವೇದಿಕೆಯಾಗಿದೆ, ಇದು ಹೈ-ಡೆಫಿನಿಷನ್ ವೀಡಿಯೊ ವಿಷಯದಿಂದ ಹಿಡಿದು ಸಂಕೀರ್ಣ ವ್ಯಾಪಾರ ಸಾಫ್ಟ್ವೇರ್ ಮತ್ತು ತಲ್ಲೀನಗೊಳಿಸುವ ಆಟಗಳವರೆಗೆ ಎಲ್ಲವನ್ನೂ ನೀಡುತ್ತದೆ. ಈ ವಿಕಾಸವು ಜಗತ್ತಿನಾದ್ಯಂತದ ಡೆವಲಪರ್ಗಳು ಎದುರಿಸಬೇಕಾದ ಒಂದು ಮಹತ್ವದ ಸವಾಲನ್ನು ತರುತ್ತದೆ: ಆಗಾಗ್ಗೆ ವಿಶ್ವಾಸಾರ್ಹವಲ್ಲದ ನೆಟ್ವರ್ಕ್ಗಳ ಮೂಲಕ ದೊಡ್ಡ ಫೈಲ್ಗಳ ವಿಶ್ವಾಸಾರ್ಹ ವರ್ಗಾವಣೆ. ಅದು ಸಿಯೋಲ್ನಲ್ಲಿ ಕಮ್ಯೂಟರ್ ರೈಲಿನಲ್ಲಿರುವ ಬಳಕೆದಾರರಾಗಿರಲಿ, ದಕ್ಷಿಣ ಅಮೆರಿಕದ ಗ್ರಾಮೀಣ ಭಾಗದಲ್ಲಿರುವ ವಿದ್ಯಾರ್ಥಿಯಾಗಿರಲಿ ಅಥವಾ ದುಬೈನಲ್ಲಿ ಕಳಪೆ ಹೋಟೆಲ್ ವೈ-ಫೈ ಸಂಪರ್ಕದಲ್ಲಿರುವ ವೃತ್ತಿಪರರಾಗಿರಲಿ, ಸಂಪರ್ಕ ಕಡಿತಗೊಂಡರೆ ಡೌನ್ಲೋಡ್ ವಿಫಲವಾಗಬಹುದು, ಬಳಕೆದಾರರು ನಿರಾಶೆಗೊಳ್ಳಬಹುದು ಮತ್ತು ಅನುಭವವು ಮುರಿದುಹೋಗಬಹುದು. ಇಲ್ಲಿಯೇ ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ API ಒಂದು ಗೇಮ್-ಚೇಂಜಿಂಗ್ ಪರಿಹಾರವಾಗಿ ಹೊರಹೊಮ್ಮುತ್ತದೆ.
ಸಾಂಪ್ರದಾಯಿಕ ವಿಧಾನಗಳಾದ `fetch()` ಅಥವಾ `XMLHttpRequest` ಶಕ್ತಿಯುತವಾಗಿವೆ, ಆದರೆ ಅವು ವೆಬ್ ಪುಟದ ಜೀವನಚಕ್ರಕ್ಕೆ ಆಂತರಿಕವಾಗಿ ಸಂಬಂಧಿಸಿವೆ. ಬಳಕೆದಾರರು ಟ್ಯಾಬ್ ಅನ್ನು ಮುಚ್ಚಿದರೆ ಅಥವಾ ಬೇರೆಡೆಗೆ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿದರೆ, ಡೌನ್ಲೋಡ್ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ. ಪುಟದ ಸೆಷನ್ನಿಂದ ಹೊರಗೆ ಉಳಿಯಲು ಅದಕ್ಕೆ ಯಾವುದೇ ಅಂತರ್ನಿರ್ಮಿತ ಕಾರ್ಯವಿಧಾನವಿಲ್ಲ. ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ API ಈ ಮಾದರಿಯನ್ನು ಮೂಲಭೂತವಾಗಿ ಬದಲಾಯಿಸುತ್ತದೆ. ಇದು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗೆ ದೊಡ್ಡ ಡೌನ್ಲೋಡ್ (ಮತ್ತು ಅಪ್ಲೋಡ್) ಕಾರ್ಯಗಳನ್ನು ಬ್ರೌಸರ್ಗೇ ಹಸ್ತಾಂತರಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ, ಅದು ನಂತರ ಯಾವುದೇ ಒಂದೇ ಬ್ರೌಸರ್ ಟ್ಯಾಬ್ನಿಂದ ಸ್ವತಂತ್ರವಾಗಿ ಹಿನ್ನೆಲೆಯಲ್ಲಿ ವರ್ಗಾವಣೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ಇದರರ್ಥ ಬಳಕೆದಾರರು ಪುಟವನ್ನು ಮುಚ್ಚಿದರೂ ಡೌನ್ಲೋಡ್ಗಳು ಮುಂದುವರಿಯಬಹುದು, ಮತ್ತು ಮುಖ್ಯವಾಗಿ, ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕವು ಬದಲಾದಾಗ ಅವುಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ವಿರಾಮಗೊಳಿಸಬಹುದು ಮತ್ತು ಪುನರಾರಂಭಿಸಬಹುದು. ವೆಬ್ನಲ್ಲಿ ನಿಜವಾಗಿಯೂ ಸ್ಥಿತಿಸ್ಥಾಪಕ, ನೇಟಿವ್-ರೀತಿಯ ಡೌನ್ಲೋಡ್ ಅನುಭವಗಳನ್ನು ನಿರ್ಮಿಸಲು ಇದು ಪ್ರಮುಖವಾಗಿದೆ.
ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ API ಎಂದರೇನು? ಒಂದು ಜಾಗತಿಕ ದೃಷ್ಟಿಕೋನ
ಅದರ ತಿರುಳಿನಲ್ಲಿ, ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ API ಒಂದು ಆಧುನಿಕ ವೆಬ್ ಮಾನದಂಡವಾಗಿದ್ದು, ದೊಡ್ಡ ನೆಟ್ವರ್ಕ್ ವಿನಂತಿಗಳನ್ನು ಬ್ರೌಸರ್ನ ಇಂಜಿನ್ಗೆ ವಹಿಸಿಕೊಡಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಇದು ಡೆವಲಪರ್ಗಳಿಗೆ ಅಪ್ಲಿಕೇಶನ್ನ ಗೋಚರ ವಿಂಡೋದ ಜೀವಿತಾವಧಿಯನ್ನು ಮೀರಿ ಮುಂದುವರಿಯುವ ಡೌನ್ಲೋಡ್ಗಳು ಅಥವಾ ಅಪ್ಲೋಡ್ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲು ಅಧಿಕಾರ ನೀಡುತ್ತದೆ. ಇದು ಕೇವಲ ಒಂದು ಸಣ್ಣ ಅನುಕೂಲವಲ್ಲ; ಇದು ಹೆಚ್ಚು ದೃಢವಾದ ಮತ್ತು ಸಮರ್ಥವಾದ ವೆಬ್ಗಾಗಿ ಒಂದು ಮೂಲಭೂತ ತಂತ್ರಜ್ಞಾನವಾಗಿದೆ.
ಜಾಗತಿಕ ದೃಷ್ಟಿಕೋನದಿಂದ ಅದರ ಪ್ರಭಾವವನ್ನು ಪರಿಗಣಿಸಿ. ಪ್ರಪಂಚದ ಅನೇಕ ಭಾಗಗಳಲ್ಲಿ, ಹೆಚ್ಚಿನ ವೇಗದ, ಸ್ಥಿರ ಇಂಟರ್ನೆಟ್ ಒಂದು ಐಷಾರಾಮಿ, ಒಂದು ಸಾಮಾನ್ಯ ವಿಷಯವಲ್ಲ. ಮೊಬೈಲ್ ಡೇಟಾ ದುಬಾರಿಯಾಗಿರಬಹುದು ಮತ್ತು ಮೀಟರ್ ಮಾಡಿರಬಹುದು. ಒಂದು ಅಪ್ಲಿಕೇಶನ್ ನಿಜವಾಗಿಯೂ ಜಾಗತಿಕವಾಗಿರಬೇಕಾದರೆ, ಅದು ಈ ವೈವಿಧ್ಯಮಯ ನೆಟ್ವರ್ಕ್ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ಪರಿಗಣಿಸಬೇಕು. ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ ಒಂದು ಸಮಾನತೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವ ತಂತ್ರಜ್ಞಾನವಾಗಿದೆ. ಇದು ಮಧ್ಯಂತರ ಸಂಪರ್ಕವಿರುವ ಪ್ರದೇಶದಲ್ಲಿರುವ ಬಳಕೆದಾರರಿಗೆ ಶೈಕ್ಷಣಿಕ ವೀಡಿಯೊ ಅಥವಾ ನಿರ್ಣಾಯಕ ಸಾಫ್ಟ್ವೇರ್ ಅಪ್ಡೇಟ್ಗಾಗಿ ಡೌನ್ಲೋಡ್ ಪ್ರಾರಂಭಿಸಲು, ಅವರ ಸಂಪರ್ಕವು ಅನುಮತಿಸಿದಂತೆ ಅದು ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಪೂರ್ಣಗೊಳ್ಳುತ್ತದೆ ಎಂದು ನಂಬಲು, ಮತ್ತು ವಿಫಲವಾದ ಫೈಲ್ಗಳನ್ನು ಮರು-ಡೌನ್ಲೋಡ್ ಮಾಡುವ ಮೂಲಕ ಅಮೂಲ್ಯವಾದ ಡೇಟಾವನ್ನು ವ್ಯರ್ಥ ಮಾಡದಿರಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ನ ಪ್ರಮುಖ ಪ್ರಯೋಜನಗಳು
- ಸ್ಥಿತಿಸ್ಥಾಪಕತ್ವ ಮತ್ತು ಪುನರಾರಂಭ: ಇದು ಇದರ ಪ್ರಮುಖ ವೈಶಿಷ್ಟ್ಯವಾಗಿದೆ. ಬ್ರೌಸರ್ನ ಆಧಾರವಾಗಿರುವ ಡೌನ್ಲೋಡ್ ಮ್ಯಾನೇಜರ್ ನೆಟ್ವರ್ಕ್ ಅಡಚಣೆಗಳನ್ನು ಸರಾಗವಾಗಿ ನಿರ್ವಹಿಸುತ್ತದೆ. ಸಂಪರ್ಕ ಕಳೆದುಹೋದರೆ, ಡೌನ್ಲೋಡ್ ವಿರಾಮಗೊಳ್ಳುತ್ತದೆ. ಸಂಪರ್ಕವು ಮರುಸ್ಥಾಪನೆಯಾದಾಗ, ಅದು ನಿಲ್ಲಿಸಿದ ಸ್ಥಳದಿಂದ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪುನರಾರಂಭಗೊಳ್ಳುತ್ತದೆ. ಇದು HTTP `Range` ಹೆಡರ್ಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಯಾವುದೇ ಸಂಕೀರ್-ಣ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ತರ್ಕವಿಲ್ಲದೆ ನಡೆಯುತ್ತದೆ.
- ಆಫ್ಲೈನ್ ನಿರಂತರತೆ: ಡೌನ್ಲೋಡ್ ಅನ್ನು ಬ್ರೌಸರ್ ಪ್ರಕ್ರಿಯೆಯಿಂದ ನಿರ್ವಹಿಸಲ್ಪಡುವುದರಿಂದ ಮತ್ತು ಸರ್ವಿಸ್ ವರ್ಕರ್ನಿಂದ ನಿರ್ವಹಿಸಲ್ಪಡುವುದರಿಂದ, ಅದು ತೆರೆದ ಟ್ಯಾಬ್ಗೆ ಸಂಬಂಧಿಸಿಲ್ಲ. ಬಳಕೆದಾರರು ಡೌನ್ಲೋಡ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಬಹುದು, ತಮ್ಮ ಲ್ಯಾಪ್ಟಾಪ್ ಅನ್ನು ಮುಚ್ಚಬಹುದು, ಮನೆಗೆ ಪ್ರಯಾಣಿಸಬಹುದು, ಮತ್ತೆ ತೆರೆಯಬಹುದು, ಮತ್ತು ಡೌನ್ಲೋಡ್ ಪೂರ್ಣಗೊಂಡಿರುವುದನ್ನು ಅಥವಾ ಪ್ರಗತಿಯಲ್ಲಿರುವುದನ್ನು ಕಾಣಬಹುದು.
- ಸಂಪನ್ಮೂಲ ದಕ್ಷತೆ: ಸಂಪನ್ಮೂಲ ಬಳಕೆಯನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸಲು ಬ್ರೌಸರ್ ಉತ್ತಮ ಸ್ಥಿತಿಯಲ್ಲಿದೆ. ಇದು ವೈ-ಫೈ ಸಂಪರ್ಕಗಳ ಪ್ರಯೋಜನವನ್ನು ಪಡೆಯಲು ವರ್ಗಾವಣೆಗಳನ್ನು ನಿಗದಿಪಡಿಸಬಹುದು, ಮೊಬೈಲ್ ಡೇಟಾವನ್ನು ಸಂರಕ್ಷಿಸಬಹುದು, ಮತ್ತು ಬ್ಯಾಟರಿ ಬಾಳಿಕೆಯನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸಲು ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ನಿರ್ವಹಿಸಬಹುದು, ಇದು ಮೊಬೈಲ್ ಬಳಕೆದಾರರಿಗೆ ಎಲ್ಲೆಡೆ ಒಂದು ನಿರ್ಣಾಯಕ ಕಾಳಜಿಯಾಗಿದೆ.
- ಸಮಗ್ರ ಬಳಕೆದಾರ ಅನುಭವ: ಬ್ರೌಸರ್ ನಡೆಯುತ್ತಿರುವ ಡೌನ್ಲೋಡ್ಗಳಿಗಾಗಿ ಒಂದು ನೇಟಿವ್, ಸಿಸ್ಟಮ್-ಮಟ್ಟದ ಬಳಕೆದಾರ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಒದಗಿಸಬಹುದು. ಬಳಕೆದಾರರು ಈ ವೆಬ್ ಡೌನ್ಲೋಡ್ಗಳನ್ನು ಅವರು ನೇಟಿವ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಂದ ಡೌನ್ಲೋಡ್ಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಅದೇ ಸ್ಥಳದಲ್ಲಿ ನೋಡುತ್ತಾರೆ ಮತ್ತು ನಿರ್ವಹಿಸುತ್ತಾರೆ, ಇದು ಒಂದು ಸರಾಗ ಮತ್ತು ಪರಿಚಿತ ಅನುಭವವನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ. ಇದು ಪ್ರಗತಿ, ಪೂರ್ಣಗೊಳ್ಳುವಿಕೆ, ಮತ್ತು ವೈಫಲ್ಯಕ್ಕಾಗಿ ಅಧಿಸೂಚನೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.
ಪ್ರಮುಖ ಘಟಕಗಳು: ಸರ್ವಿಸ್ ವರ್ಕರ್ಗಳು ಮತ್ತು ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ಫೆಚ್ಮ್ಯಾನೇಜರ್
ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು, ನೀವು ಮೊದಲು ಅದರ ಎರಡು ಪ್ರಾಥಮಿಕ ಘಟಕಗಳೊಂದಿಗೆ ಪರಿಚಿತರಾಗಿರಬೇಕು. ಅವು ಜೊತೆಯಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತವೆ: ಒಂದು ವೆಬ್ ಪುಟದಿಂದ ವಿನಂತಿಯನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ, ಮತ್ತು ಇನ್ನೊಂದು ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಫಲಿತಾಂಶವನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ.
ಗುಪ್ತ ನಾಯಕ: ಸರ್ವಿಸ್ ವರ್ಕರ್
ಒಂದು ಸರ್ವಿಸ್ ವರ್ಕರ್ ಒಂದು ರೀತಿಯ ವೆಬ್ ವರ್ಕರ್ ಆಗಿದೆ, ಮೂಲಭೂತವಾಗಿ ನಿಮ್ಮ ಬ್ರೌಸರ್ ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಚಲಾಯಿಸುವ ಒಂದು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಸ್ಕ್ರಿಪ್ಟ್, ಯಾವುದೇ ವೆಬ್ ಪುಟದಿಂದ ಸಂಪೂರ್ಣವಾಗಿ ಪ್ರತ್ಯೇಕವಾಗಿದೆ. ಇದು ಪ್ರೋಗ್ರಾಮೆಬಲ್ ನೆಟ್ವರ್ಕ್ ಪ್ರಾಕ್ಸಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ನೆಟ್ವರ್ಕ್ ವಿನಂತಿಗಳನ್ನು ತಡೆದು ನಿರ್ವಹಿಸುತ್ತದೆ, ಕ್ಯಾಶ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ, ಮತ್ತು ಪುಶ್ ಅಧಿಸೂಚನೆಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ. ಇದು ಸ್ವತಂತ್ರವಾಗಿ ಚಲಾಯಿಸುವುದರಿಂದ, ನಿಮ್ಮ ವೆಬ್ಸೈಟ್ ಬ್ರೌಸರ್ ಟ್ಯಾಬ್ನಲ್ಲಿ ತೆರೆಯದಿದ್ದರೂ ಸಹ ಇದು ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಬಹುದು. ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ಗಾಗಿ, ಸರ್ವಿಸ್ ವರ್ಕರ್ ಡೌನ್ಲೋಡ್ನ ಅಂತಿಮ ಯಶಸ್ಸು ಅಥವಾ ವೈಫಲ್ಯವನ್ನು ಆಲಿಸುವ, ಫಲಿತಾಂಶದ ಫೈಲ್ಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವ, ಮತ್ತು UI ಅನ್ನು ನವೀಕರಿಸುವ ಅಥವಾ ಆಫ್ಲೈನ್ ಬಳಕೆಗಾಗಿ ಸ್ವತ್ತುಗಳನ್ನು ಕ್ಯಾಶ್ ಮಾಡುವ ನಿರಂತರ ಪರಿಸರವಾಗಿದೆ.
ನಿರ್ವಾಹಕ: ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ಫೆಚ್ಮ್ಯಾನೇಜರ್
`BackgroundFetchManager` ಎನ್ನುವುದು ನಿಮ್ಮ ಮುಖ್ಯ ವೆಬ್ ಪುಟದ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಿಂದ ಪ್ರವೇಶಿಸಬಹುದಾದ ಇಂಟರ್ಫೇಸ್ ಆಗಿದೆ, ಇದನ್ನು ನೀವು ಹಿನ್ನೆಲೆ ಫೆಚ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು ಮತ್ತು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಬಳಸುತ್ತೀರಿ. ನೀವು ಇದನ್ನು ಸರ್ವಿಸ್ ವರ್ಕರ್ ನೋಂದಣಿ ಆಬ್ಜೆಕ್ಟ್ ಮೂಲಕ ಪ್ರವೇಶಿಸುತ್ತೀರಿ: `navigator.serviceWorker.ready.then(swReg => swReg.backgroundFetch)`. ಇದರ ಪ್ರಾಥಮಿಕ ವಿಧಾನ `fetch()` ಆಗಿದೆ, ಇದು ಒಂದು ID, ಡೌನ್ಲೋಡ್ ಮಾಡಬೇಕಾದ ಫೈಲ್ಗಳ ಪಟ್ಟಿ, ಮತ್ತು ಆಯ್ಕೆಗಳ ಗುಂಪನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ಈ ವಿಧಾನವು ಪ್ರಾರಂಭದ ಸಂಕೇತವಾಗಿದೆ; ಒಮ್ಮೆ ನೀವು ಅದನ್ನು ಕರೆದರೆ, ಬ್ರೌಸರ್ ಜವಾಬ್ದಾರಿಯನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, ಮತ್ತು ನಿಮ್ಮ ಸರ್ವಿಸ್ ವರ್ಕರ್ ಅಂತಿಮ ಗೆರೆಯಲ್ಲಿ ಕಾಯುತ್ತದೆ.
ಒಂದು ಪ್ರಾಯೋಗಿಕ ಹಂತ-ಹಂತದ ಅನುಷ್ಠಾನ ಮಾರ್ಗದರ್ಶಿ
ದೊಡ್ಡ ವೀಡಿಯೊ ಫೈಲ್ಗಾಗಿ ಪುನರಾರಂಭಿಸಬಹುದಾದ ಡೌನ್ಲೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಪ್ರಕ್ರಿಯೆಯ ಮೂಲಕ ಸಾಗೋಣ. ಈ ಉದಾಹರಣೆಯು ಸಾರ್ವತ್ರಿಕವಾಗಿ ಅನ್ವಯಿಸುತ್ತದೆ, ಅದು ಯುನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ನಲ್ಲಿನ ಮಾಧ್ಯಮ ವೇದಿಕೆಯಾಗಿರಲಿ, ಭಾರತದಲ್ಲಿನ ಇ-ಲರ್ನಿಂಗ್ ಸೈಟ್ ಆಗಿರಲಿ, ಅಥವಾ ಜರ್ಮನಿಯಲ್ಲಿನ ಕಾರ್ಪೊರೇಟ್ ತರಬೇತಿ ಪೋರ್ಟಲ್ ಆಗಿರಲಿ.
ಹಂತ 1: ಬ್ರೌಸರ್ ಬೆಂಬಲವನ್ನು ಪರಿಶೀಲಿಸುವುದು
ಬೇರೆ ಯಾವುದನ್ನಾದರೂ ಮಾಡುವ ಮೊದಲು, ಬಳಕೆದಾರರ ಬ್ರೌಸರ್ ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ API ಅನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆಯೇ ಎಂದು ನೀವು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು. ಪ್ರಗತಿಪರ ವರ್ಧನೆ ಎಂದು ಕರೆಯಲ್ಪಡುವ ಈ ಅಭ್ಯಾಸವು ಎಲ್ಲರಿಗೂ ಕ್ರಿಯಾತ್ಮಕ ಅನುಭವವನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ, ಅವರು ಅತ್ಯಂತ ಸುಧಾರಿತ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪಡೆಯದಿದ್ದರೂ ಸಹ.
ನಿಮ್ಮ ಮುಖ್ಯ ಅಪ್ಲಿಕೇಶನ್ ಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ, ನೀವು `BackgroundFetchManager` ನ ಅಸ್ತಿತ್ವವನ್ನು ಪರಿಶೀಲಿಸಬೇಕು:
if ('BackgroundFetchManager' in self) { // API ಬೆಂಬಲಿತವಾಗಿದೆ, ನಾವು ಸುಧಾರಿತ ಡೌನ್ಲೋಡ್ ಬಟನ್ ತೋರಿಸಬಹುದು } else { // API ಬೆಂಬಲಿತವಾಗಿಲ್ಲ, ಪರ್ಯಾಯವನ್ನು ಒದಗಿಸಿ (ಉದಾಹರಣೆಗೆ, ಸಾಮಾನ್ಯ ಲಿಂಕ್) }
ಹಂತ 2: ಸರ್ವಿಸ್ ವರ್ಕರ್ ಅನ್ನು ನೋಂದಾಯಿಸುವುದು
ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ ಮೂಲಭೂತವಾಗಿ ಸರ್ವಿಸ್ ವರ್ಕರ್ ಅನ್ನು ಅವಲಂಬಿಸಿದೆ. ನಿಮ್ಮ ಪ್ರಗತಿಪರ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ (PWA) ಗಾಗಿ ನೀವು ಈಗಾಗಲೇ ಒಂದನ್ನು ಹೊಂದಿಲ್ಲದಿದ್ದರೆ, ನೀವು ಒಂದನ್ನು ರಚಿಸಿ ನೋಂದಾಯಿಸಬೇಕಾಗುತ್ತದೆ. ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್ನ ಮೂಲ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ `service-worker.js` ಹೆಸರಿನ ಫೈಲ್ ಅನ್ನು ರಚಿಸಿ. ನಂತರ, ಅದನ್ನು ನಿಮ್ಮ ಮುಖ್ಯ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಫೈಲ್ನಿಂದ ನೋಂದಾಯಿಸಿ:
async function registerServiceWorker() { if ('serviceWorker' in navigator) { try { const registration = await navigator.serviceWorker.register('/service-worker.js'); console.log('ಸರ್ವಿಸ್ ವರ್ಕರ್ ಯಶಸ್ವಿಯಾಗಿ ನೋಂದಾಯಿಸಲಾಗಿದೆ:', registration); } catch (error) { console.error('ಸರ್ವಿಸ್ ವರ್ಕರ್ ನೋಂದಣಿ ವಿಫಲವಾಗಿದೆ:', error); } } } registerServiceWorker();
ಹಂತ 3: ಫ್ರಂಟ್ ಎಂಡ್ನಿಂದ ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುವುದು
ಈಗ, ಬಳಕೆದಾರರು ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ಡೌನ್ಲೋಡ್ ಪ್ರಾರಂಭಿಸುವ ಫಂಕ್ಷನ್ ಅನ್ನು ರಚಿಸೋಣ. ಈ ಫಂಕ್ಷನ್ ಸಕ್ರಿಯ ಸರ್ವಿಸ್ ವರ್ಕರ್ ನೋಂದಣಿಯನ್ನು ಪಡೆಯುತ್ತದೆ ಮತ್ತು ನಂತರ `backgroundFetch.fetch()` ಅನ್ನು ಕರೆಯುತ್ತದೆ.
const downloadVideoButton = document.getElementById('download-video-btn'); downloadVideoButton.addEventListener('click', async () => { try { // ಸರ್ವಿಸ್ ವರ್ಕರ್ ನೋಂದಣಿಯನ್ನು ಪಡೆಯಿರಿ const swReg = await navigator.serviceWorker.ready; // ಡೌನ್ಲೋಡ್ ವಿವರಗಳನ್ನು ವಿವರಿಸಿ const videoUrl = '/assets/large-course-video.mp4'; const videoFileSize = 250 * 1024 * 1024; // 250 MB // ಹಿನ್ನೆಲೆ ಫೆಚ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ const bgFetch = await swReg.backgroundFetch.fetch('course-video-download-01', [videoUrl], { title: 'Module 1: Introduction to Web Development', icons: [{ sizes: '192x192', src: '/images/icons/icon-192.png', type: 'image/png', }], downloadTotal: videoFileSize, } ); console.log('ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ ಪ್ರಾರಂಭವಾಗಿದೆ:', bgFetch); } catch (error) { console.error('ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ:', error); } });
`swReg.backgroundFetch.fetch()` ಪ್ಯಾರಾಮೀಟರ್ಗಳನ್ನು ವಿವರಿಸೋಣ:
- ID (`'course-video-download-01'`): ಈ ನಿರ್ದಿಷ್ಟ ಡೌನ್ಲೋಡ್ ಕಾರ್ಯಕ್ಕಾಗಿ ಒಂದು ಅನನ್ಯ ಸ್ಟ್ರಿಂಗ್ ಗುರುತಿಸುವಿಕೆ. ನೀವು ಈ ID ಅನ್ನು ನಂತರ ಈ ಕಾರ್ಯವನ್ನು ಉಲ್ಲೇಖಿಸಲು ಬಳಸುತ್ತೀರಿ.
- ವಿನಂತಿಗಳು (`[videoUrl]`): ಫೆಚ್ ಮಾಡಬೇಕಾದ URL ಗಳ ಒಂದು ಸರಣಿ. ನೀವು ಒಂದೇ, ಗುಂಪು ಮಾಡಲಾದ ಕಾರ್ಯದಲ್ಲಿ ಬಹು ಫೈಲ್ಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಬಹುದು.
- ಆಯ್ಕೆಗಳು (`{...}`): ಡೌನ್ಲೋಡ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಒಂದು ಆಬ್ಜೆಕ್ಟ್. `title` ಮತ್ತು `icons` ಅನ್ನು ಬ್ರೌಸರ್ ನೇಟಿವ್ UI ಅಧಿಸೂಚನೆಯನ್ನು ರಚಿಸಲು ಬಳಸುತ್ತದೆ. `downloadTotal` ಎನ್ನುವುದು ಎಲ್ಲಾ ಫೈಲ್ಗಳ ಒಟ್ಟು ನಿರೀಕ್ಷಿತ ಗಾತ್ರವಾಗಿದೆ (ಬೈಟ್ಗಳಲ್ಲಿ); ಇದನ್ನು ಒದಗಿಸುವುದು ಬ್ರೌಸರ್ಗೆ ನಿಖರವಾದ ಪ್ರಗತಿ ಪಟ್ಟಿಯನ್ನು ಪ್ರದರ್ಶಿಸಲು ನಿರ್ಣಾಯಕವಾಗಿದೆ.
ಹಂತ 4: ಸರ್ವಿಸ್ ವರ್ಕರ್ನಲ್ಲಿ ಈವೆಂಟ್ಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು
ಡೌನ್ಲೋಡ್ ಅನ್ನು ಬ್ರೌಸರ್ಗೆ ಹಸ್ತಾಂತರಿಸಿದ ನಂತರ, ನಿಮ್ಮ ಫ್ರಂಟ್ ಎಂಡ್ ಕೋಡ್ನ ಕೆಲಸ ಸದ್ಯಕ್ಕೆ ಮುಗಿದಿದೆ. ಉಳಿದ ತರ್ಕವು `service-worker.js` ನಲ್ಲಿ ಇರುತ್ತದೆ, ಕಾರ್ಯವು ಪೂರ್ಣಗೊಂಡಾಗ ಅಥವಾ ವಿಫಲವಾದಾಗ ಬ್ರೌಸರ್ ಅದನ್ನು ಎಚ್ಚರಗೊಳಿಸುತ್ತದೆ.
ನೀವು ಎರಡು ಪ್ರಮುಖ ಈವೆಂಟ್ಗಳನ್ನು ಆಲಿಸಬೇಕು: `backgroundfetchsuccess` ಮತ್ತು `backgroundfetchfail`.
// service-worker.js ನಲ್ಲಿ self.addEventListener('backgroundfetchsuccess', (event) => { const bgFetch = event.registration; event.waitUntil(async function () { console.log(`'${bgFetch.id}' ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ ಯಶಸ್ವಿಯಾಗಿ ಪೂರ್ಣಗೊಂಡಿದೆ.`); // ನಮ್ಮ ಡೌನ್ಲೋಡ್ ಮಾಡಿದ ಫೈಲ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸುವ ಕ್ಯಾಶ್ ತೆರೆಯಿರಿ const cache = await caches.open('downloaded-assets-v1'); // ಎಲ್ಲಾ ಡೌನ್ಲೋಡ್ ಮಾಡಿದ ಫೈಲ್ ರೆಕಾರ್ಡ್ಗಳನ್ನು ಪಡೆಯಿರಿ const records = await bgFetch.matchAll(); // ಪ್ರತಿ ರೆಕಾರ್ಡ್ಗೆ, ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಕ್ಯಾಶ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಿ const promises = records.map(async (record) => { const response = record.response.clone(); await cache.put(record.request, response); }); await Promise.all(promises); // ಐಚ್ಛಿಕ: ಡೌನ್ಲೋಡ್ ಅಧಿಸೂಚನೆಯಲ್ಲಿ UI ಶೀರ್ಷಿಕೆಯನ್ನು ನವೀಕರಿಸಿ await event.updateUI({ title: 'ಡೌನ್ಲೋಡ್ ಪೂರ್ಣಗೊಂಡಿದೆ ಮತ್ತು ಸಿದ್ಧವಾಗಿದೆ!' }); }()); }); self.addEventListener('backgroundfetchfail', (event) => { const bgFetch = event.registration; console.error(`'${bgFetch.id}' ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ ವಿಫಲವಾಗಿದೆ.`); // ಐಚ್ಛಿಕ: ವೈಫಲ್ಯವನ್ನು ಪ್ರತಿಬಿಂಬಿಸಲು UI ಅನ್ನು ನವೀಕರಿಸಿ event.updateUI({ title: 'ಡೌನ್ಲೋಡ್ ವಿಫಲವಾಗಿದೆ. ದಯವಿಟ್ಟು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.' }); });
ಯಶಸ್ಸಿನ ಹ್ಯಾಂಡ್ಲರ್ನಲ್ಲಿ, ನಾವು ಕ್ಯಾಶ್ ಸ್ಟೋರೇಜ್ ಅನ್ನು ತೆರೆಯುತ್ತೇವೆ, `bgFetch.matchAll()` ಬಳಸಿ ಎಲ್ಲಾ ಡೌನ್ಲೋಡ್ ಮಾಡಿದ ಫೈಲ್ಗಳನ್ನು ಹಿಂಪಡೆಯುತ್ತೇವೆ, ಮತ್ತು ನಂತರ ಪ್ರತಿಯೊಂದನ್ನು ಕ್ಯಾಶ್ನಲ್ಲಿ ಇರಿಸುತ್ತೇವೆ. ಇದು ನಿಮ್ಮ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗೆ ಆಫ್ಲೈನ್ನಲ್ಲಿ ವೀಡಿಯೊ ಪ್ಲೇಬ್ಯಾಕ್ಗೆ ಲಭ್ಯವಾಗುವಂತೆ ಮಾಡುತ್ತದೆ.
ಹಂತ 5: ಪ್ರಗತಿಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುವುದು ಮತ್ತು ಬಳಕೆದಾರರ ಸಂವಹನ
ಉತ್ತಮ ಬಳಕೆದಾರ ಅನುಭವವು ಪ್ರತಿಕ್ರಿಯೆ ನೀಡುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಬಳಕೆದಾರರು ಬ್ರೌಸರ್ ಒದಗಿಸಿದ ಡೌನ್ಲೋಡ್ ಅಧಿಸೂಚನೆಯ ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ, ನಾವು ಅವರನ್ನು ನಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿನ ಸಂಬಂಧಿತ ಪುಟಕ್ಕೆ ಕರೆದೊಯ್ಯಬೇಕು. ನಾವು ಇದನ್ನು ಸರ್ವಿಸ್ ವರ್ಕರ್ನಲ್ಲಿ `backgroundfetchclick` ಈವೆಂಟ್ನೊಂದಿಗೆ ನಿರ್ವಹಿಸುತ್ತೇವೆ.
// service-worker.js ನಲ್ಲಿ self.addEventListener('backgroundfetchclick', (event) => { const bgFetch = event.registration; if (bgFetch.id === 'course-video-download-01') { event.waitUntil( clients.openWindow('/downloads') ); } });
ಈ ಕೋಡ್, ಬಳಕೆದಾರರು ಈ ನಿರ್ದಿಷ್ಟ ಡೌನ್ಲೋಡ್ ಕಾರ್ಯಕ್ಕಾಗಿ ಅಧಿಸೂಚನೆಯನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ನಿಮ್ಮ ವೆಬ್ಸೈಟ್ನ `/downloads` ಪುಟವನ್ನು ತೆರೆಯಲು ಬ್ರೌಸರ್ಗೆ ಹೇಳುತ್ತದೆ. ಆ ಪುಟದಲ್ಲಿ, ನೀವು ನಂತರ ಡೌನ್ಲೋಡ್ ಪ್ರಗತಿಯನ್ನು ಅಥವಾ ಪೂರ್ಣಗೊಂಡ ಡೌನ್ಲೋಡ್ಗಳ ಪಟ್ಟಿಯನ್ನು ಪ್ರದರ್ಶಿಸಬಹುದು.
ಪುನರಾರಂಭದ ಮ್ಯಾಜಿಕ್: ಇದು ವಾಸ್ತವವಾಗಿ ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ?
ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ನ ಅತ್ಯಂತ ಶಕ್ತಿಯುತ ಮತ್ತು ಬಹುಶಃ ಅತ್ಯಂತ ತಪ್ಪಾಗಿ ಅರ್ಥೈಸಿಕೊಂಡ ಅಂಶವೆಂದರೆ ಅದರ ಸ್ವಯಂಚಾಲಿತ ಪುನರಾರಂಭದ ಸಾಮರ್ಥ್ಯ. ನೀವು ಅದಕ್ಕಾಗಿ ಯಾವುದೇ ವಿಶೇಷ ಕೋಡ್ ಬರೆಯದೆಯೇ ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ?
ಉತ್ತರವೆಂದರೆ ನೀವು ಜವಾಬ್ದಾರಿಯನ್ನು ಹೆಚ್ಚು ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿದ, ಸಿಸ್ಟಮ್-ಮಟ್ಟದ ಪ್ರಕ್ರಿಯೆಗೆ ವಹಿಸಿದ್ದೀರಿ: ಬ್ರೌಸರ್ನ ಸ್ವಂತ ಡೌನ್ಲೋಡ್ ಮ್ಯಾನೇಜರ್. ನೀವು ಹಿನ್ನೆಲೆ ಫೆಚ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿದಾಗ, ನೀವು ನೆಟ್ವರ್ಕ್ ಮೂಲಕ ಬೈಟ್ಗಳನ್ನು ನೇರವಾಗಿ ನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ. ಬ್ರೌಸರ್ ಅದನ್ನು ಮಾಡುತ್ತಿದೆ.
ನೆಟ್ವರ್ಕ್ ಅಡಚಣೆಯ ಸಮಯದಲ್ಲಿ ನಡೆಯುವ ಘಟನೆಗಳ ಅನುಕ್ರಮ ಇಲ್ಲಿದೆ:
- ಬಳಕೆದಾರರು ಫೈಲ್ ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡುತ್ತಿದ್ದಾರೆ ಮತ್ತು ಅವರ ಸಾಧನವು ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕವನ್ನು ಕಳೆದುಕೊಳ್ಳುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, ಅವರು ಸುರಂಗವನ್ನು ಪ್ರವೇಶಿಸುತ್ತಾರೆ).
- ಬ್ರೌಸರ್ನ ಡೌನ್ಲೋಡ್ ಮ್ಯಾನೇಜರ್ ನೆಟ್ವರ್ಕ್ ವೈಫಲ್ಯವನ್ನು ಪತ್ತೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ವರ್ಗಾವಣೆಯನ್ನು ಸರಾಗವಾಗಿ ವಿರಾಮಗೊಳಿಸುತ್ತದೆ. ಎಷ್ಟು ಬೈಟ್ಗಳನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಸ್ವೀಕರಿಸಲಾಗಿದೆ ಎಂಬುದರ ಜಾಡನ್ನು ಇಡುತ್ತದೆ.
- ಬಳಕೆದಾರರ ಸಾಧನವು ನಂತರ ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕವನ್ನು ಮರಳಿ ಪಡೆಯುತ್ತದೆ.
- ಬ್ರೌಸರ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಡೌನ್ಲೋಡ್ ಅನ್ನು ಪುನರಾರಂಭಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ಇದು ಅದೇ ಫೈಲ್ಗಾಗಿ ಸರ್ವರ್ಗೆ ಹೊಸ HTTP ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ, ಆದರೆ ಈ ಬಾರಿ ಅದು `Range` ಹೆಡರ್ ಅನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಸರ್ವರ್ಗೆ ಹೇಳುತ್ತದೆ, "ನನ್ನ ಬಳಿ ಈಗಾಗಲೇ ಮೊದಲ 'X' ಬೈಟ್ಗಳಿವೆ, ದಯವಿಟ್ಟು ನನಗೆ ಉಳಿದವನ್ನು ಕಳುಹಿಸಿ, 'X+1' ಬೈಟ್ನಿಂದ ಪ್ರಾರಂಭಿಸಿ."
- ಸರಿಯಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ಸರ್ವರ್ `206 Partial Content` ಸ್ಥಿತಿಯೊಂದಿಗೆ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತದೆ ಮತ್ತು ಫೈಲ್ನ ಉಳಿದ ಭಾಗವನ್ನು ಸ್ಟ್ರೀಮ್ ಮಾಡಲು ಪ್ರಾರಂಭಿಸುತ್ತದೆ.
- ಬ್ರೌಸರ್ ಈ ಹೊಸ ಡೇಟಾವನ್ನು ಭಾಗಶಃ ಡೌನ್ಲೋಡ್ ಮಾಡಿದ ಫೈಲ್ಗೆ ಸೇರಿಸುತ್ತದೆ.
ಈ ಸಂಪೂರ್ಣ ಪ್ರಕ್ರಿಯೆಯು ನಿಮ್ಮ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಕೋಡ್ಗೆ ಪಾರದರ್ಶಕವಾಗಿರುತ್ತದೆ. ಫೈಲ್ ಸಂಪೂರ್ಣವಾಗಿ ಡೌನ್ಲೋಡ್ ಆಗಿ ಮತ್ತು ಯಶಸ್ವಿಯಾಗಿ ಒಟ್ಟುಗೂಡಿಸಿದಾಗ, ಅಥವಾ ಪ್ರಕ್ರಿಯೆಯು ಅಂತಿಮವಾಗಿ ವಿಫಲವಾದರೆ (ಉದಾಹರಣೆಗೆ, ಫೈಲ್ ಇನ್ನು ಮುಂದೆ ಸರ್ವರ್ನಲ್ಲಿ ಇಲ್ಲದಿದ್ದರೆ) ಮಾತ್ರ ನಿಮ್ಮ ಸರ್ವಿಸ್ ವರ್ಕರ್ಗೆ ಕೊನೆಯಲ್ಲಿ ಸೂಚಿಸಲಾಗುತ್ತದೆ. ಈ ಅಮೂರ್ತತೆಯು ನಂಬಲಾಗದಷ್ಟು ಶಕ್ತಿಯುತವಾಗಿದೆ, ಡೆವಲಪರ್ಗಳನ್ನು ಸಂಕೀರ್ಣ ಮತ್ತು ದುರ್ಬಲ ಡೌನ್ಲೋಡ್ ಪುನರಾರಂಭದ ತರ್ಕವನ್ನು ನಿರ್ಮಿಸುವುದರಿಂದ ಮುಕ್ತಗೊಳಿಸುತ್ತದೆ.
ಜಾಗತಿಕ ಪ್ರೇಕ್ಷಕರಿಗಾಗಿ ಸುಧಾರಿತ ಪರಿಕಲ್ಪನೆಗಳು ಮತ್ತು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು
ನಿಖರವಾದ `downloadTotal` ಅನ್ನು ಒದಗಿಸುವುದು
`downloadTotal` ಆಯ್ಕೆಯು ಕೇವಲ ಒಂದು ಉತ್ತಮ-ಹೊಂದಿರಬೇಕಾದ ವಿಷಯಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿದೆ. ಇದಿಲ್ಲದೆ, ಬ್ರೌಸರ್ ಕೇವಲ ಅನಿರ್ದಿಷ್ಟ ಪ್ರಗತಿ ಸೂಚಕವನ್ನು (ಉದಾಹರಣೆಗೆ, ತಿರುಗುವ ಐಕಾನ್) ತೋರಿಸಬಲ್ಲದು. ಅದರೊಂದಿಗೆ, ಅದು ನಿಖರವಾದ ಪ್ರಗತಿ ಪಟ್ಟಿಯನ್ನು ಪ್ರದರ್ಶಿಸಬಹುದು ಮತ್ತು ಉಳಿದ ಅಂದಾಜು ಸಮಯವನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಬಹುದು. ಇದು ಬಳಕೆದಾರರ ಅನುಭವವನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಸುಧಾರಿಸುತ್ತದೆ. ಈ ಮೌಲ್ಯವನ್ನು ಪಡೆಯಲು, ನೀವು `Content-Length` ಹೆಡರ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲು ಫೈಲ್ನ URL ಗೆ ಮುಂಚಿತವಾಗಿ `HEAD` ವಿನಂತಿಯನ್ನು ಮಾಡಬೇಕಾಗಬಹುದು, ಅಥವಾ ನಿಮ್ಮ API ಫೈಲ್ ಗಾತ್ರಗಳನ್ನು ಅದರ ಮೆಟಾಡೇಟಾದ ಭಾಗವಾಗಿ ಒದಗಿಸಬಹುದು.
ಒಂದೇ ಫೆಚ್ನಲ್ಲಿ ಬಹು ಫೈಲ್ಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು
ಸಂಬಂಧಿತ ಸ್ವತ್ತುಗಳನ್ನು ಗುಂಪು ಮಾಡುವಾಗ API ಯು ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಒಬ್ಬ ಬಳಕೆದಾರರು ಫೋಟೋ ಗ್ಯಾಲರಿ, ಅದರ ದಸ್ತಾವೇಜುಗಳೊಂದಿಗೆ ಸಾಫ್ಟ್ವೇರ್ ಪ್ಯಾಕೇಜ್, ಅಥವಾ ಅದರ ಎಲ್ಲಾ ಟೆಕ್ಸ್ಚರ್ಗಳು ಮತ್ತು ಆಡಿಯೊ ಫೈಲ್ಗಳೊಂದಿಗೆ ವೀಡಿಯೊ ಗೇಮ್ ಮಟ್ಟವನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡುತ್ತಿದ್ದಾರೆಂದು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ನೀವು `backgroundFetch.fetch()` ಗೆ URL ಗಳ ಸರಣಿಯನ್ನು ರವಾನಿಸಬಹುದು. ಇದನ್ನು ಬ್ರೌಸರ್ನಿಂದ ಒಂದೇ ಪರಮಾಣು ಕಾರ್ಯವಾಗಿ ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ, ಸಂಪೂರ್ಣ ಬಂಡಲ್ಗಾಗಿ ಒಂದು ಅಧಿಸೂಚನೆ ಮತ್ತು ಒಂದು ಪ್ರಗತಿ ಪಟ್ಟಿಯೊಂದಿಗೆ. ನಿಮ್ಮ `backgroundfetchsuccess` ಹ್ಯಾಂಡ್ಲರ್ನಲ್ಲಿ, `bgFetch.matchAll()` ರೆಕಾರ್ಡ್ಗಳ ಸರಣಿಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಅದನ್ನು ನೀವು ನಂತರ ಪ್ರತ್ಯೇಕವಾಗಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಬಹುದು.
ದೋಷ ನಿರ್ವಹಣೆ ಮತ್ತು ವೈಫಲ್ಯದ ಸನ್ನಿವೇಶಗಳು
ಹಲವಾರು ಕಾರಣಗಳಿಗಾಗಿ ಡೌನ್ಲೋಡ್ ವಿಫಲವಾಗಬಹುದು: ಸರ್ವರ್ 404 ದೋಷವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಬಳಕೆದಾರರ ಡಿಸ್ಕ್ ಸ್ಥಳವು ಖಾಲಿಯಾಗುತ್ತದೆ, ಅಥವಾ ಬಳಕೆದಾರರು ಬ್ರೌಸರ್ನ UI ನಿಂದ ಡೌನ್ಲೋಡ್ ಅನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ರದ್ದುಗೊಳಿಸುತ್ತಾರೆ. ನಿಮ್ಮ `backgroundfetchfail` ಈವೆಂಟ್ ಹ್ಯಾಂಡ್ಲರ್ ನಿಮ್ಮ ಸುರಕ್ಷತಾ ಜಾಲವಾಗಿದೆ. ನೀವು ಇದನ್ನು ಯಾವುದೇ ಭಾಗಶಃ ಡೇಟಾವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಲು, ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಬಳಕೆದಾರರಿಗೆ ಸೂಚಿಸಲು, ಮತ್ತು ಬಹುಶಃ ಮರುಪ್ರಯತ್ನ ಬಟನ್ ಅನ್ನು ನೀಡಲು ಬಳಸಬಹುದು. ವೈಫಲ್ಯವು ಒಂದು ಸಾಧ್ಯತೆ ಎಂದು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ದೃಢವಾದ ವ್ಯವಸ್ಥೆಯನ್ನು ನಿರ್ಮಿಸಲು ಪ್ರಮುಖವಾಗಿದೆ.
ಕ್ಯಾಶ್ API ಯೊಂದಿಗೆ ಡೌನ್ಲೋಡ್ ಮಾಡಿದ ಸ್ವತ್ತುಗಳನ್ನು ಸಂಗ್ರಹಿಸುವುದು
ಡೌನ್ಲೋಡ್ ಮಾಡಿದ ವೆಬ್ ಸ್ವತ್ತುಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ಮತ್ತು ಪರಿಣಾಮಕಾರಿ ಸ್ಥಳವೆಂದರೆ Cache API. ಇದು `Request` ಮತ್ತು `Response` ಆಬ್ಜೆಕ್ಟ್ಗಳಿಗಾಗಿ ವಿಶೇಷವಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ಸಂಗ್ರಹಣಾ ಕಾರ್ಯವಿಧಾನವಾಗಿದೆ. ನಿಮ್ಮ ಡೌನ್ಲೋಡ್ ಮಾಡಿದ ಫೈಲ್ಗಳನ್ನು ಕ್ಯಾಶ್ನಲ್ಲಿ ಇರಿಸುವ ಮೂಲಕ, ಬಳಕೆದಾರರು ಅವುಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಪ್ರಯತ್ನಿಸಿದಾಗ ನೀವು ನಂತರ ಅವುಗಳನ್ನು ನೇರವಾಗಿ ಸರ್ವಿಸ್ ವರ್ಕರ್ನಿಂದ ಸರ್ವ್ ಮಾಡಬಹುದು, ಇದು ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿಜವಾಗಿಯೂ ಆಫ್ಲೈನ್-ಸಾಮರ್ಥ್ಯವನ್ನುಳ್ಳದ್ದನ್ನಾಗಿ ಮಾಡುತ್ತದೆ.
ವಿವಿಧ ಕೈಗಾರಿಕೆಗಳಲ್ಲಿನ ಬಳಕೆಯ ಪ್ರಕರಣಗಳು
ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ನ ಅನ್ವಯಗಳು ವಿಶಾಲವಾಗಿವೆ ಮತ್ತು ಹಲವಾರು ಜಾಗತಿಕ ಕೈಗಾರಿಕೆಗಳಲ್ಲಿ ವ್ಯಾಪಿಸಿವೆ:
- ಮಾಧ್ಯಮ ಮತ್ತು ಮನರಂಜನೆ: ವೆಬ್-ಆಧಾರಿತ ಸ್ಟ್ರೀಮಿಂಗ್ ಸೇವೆಗಳು ಆಫ್ಲೈನ್ ಮೋಡ್ ಅನ್ನು ನೀಡಬಹುದು, ಯಾವುದೇ ದೇಶದ ಬಳಕೆದಾರರಿಗೆ ವಿಮಾನ ಪ್ರಯಾಣ ಅಥವಾ ಪ್ರಯಾಣಕ್ಕಾಗಿ ಚಲನಚಿತ್ರಗಳು ಅಥವಾ ಸಂಗೀತವನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ, ಅವರ ನೇಟಿವ್ ಅಪ್ಲಿಕೇಶನ್ ಪ್ರತಿರೂಪಗಳಂತೆಯೇ.
- ಶಿಕ್ಷಣ ಮತ್ತು ಇ-ಲರ್ನಿಂಗ್: ಆಫ್ರಿಕಾದಲ್ಲಿನ ಒಂದು ವಿಶ್ವವಿದ್ಯಾನಿಲಯವು ವಿದ್ಯಾರ್ಥಿಗಳಿಗೆ ದೊಡ್ಡ ವೀಡಿಯೊ ಉಪನ್ಯಾಸಗಳು ಮತ್ತು ಸಂವಾದಾತ್ಮಕ ಕೋರ್ಸ್ ಸಾಮಗ್ರಿಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲು ವೆಬ್ ಪೋರ್ಟಲ್ ಅನ್ನು ಒದಗಿಸಬಹುದು, ಕಳಪೆ ಮನೆ ಇಂಟರ್ನೆಟ್ ಹೊಂದಿರುವವರೂ ಸಹ ತಮ್ಮ ಶಿಕ್ಷಣವನ್ನು ಪಡೆಯಬಹುದೆಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
- ಉದ್ಯಮ ಮತ್ತು ಕ್ಷೇತ್ರ ಸೇವೆಗಳು: ಜಾಗತಿಕ ಉತ್ಪಾದನಾ ಕಂಪನಿಯು ತನ್ನ ಕ್ಷೇತ್ರ ಇಂಜಿನಿಯರ್ಗಳಿಗೆ PWA ಅನ್ನು ಸಜ್ಜುಗೊಳಿಸಬಹುದು, ಅದು ಅವರಿಗೆ ಇಂಟರ್ನೆಟ್ ಪ್ರವೇಶವಿಲ್ಲದ ದೂರಸ್ಥ ಸ್ಥಳಕ್ಕೆ ಹೋಗುವ ಮೊದಲು ಯಂತ್ರೋಪಕರಣಗಳಿಗಾಗಿ ಬೃಹತ್ 3D ಸ್ಕೀಮ್ಯಾಟಿಕ್ಸ್ ಮತ್ತು ತಾಂತ್ರಿಕ ಕೈಪಿಡಿಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
- ಪ್ರಯಾಣ ಮತ್ತು ಪ್ರವಾಸೋದ್ಯಮ: ಪ್ರಯಾಣ ಅಪ್ಲಿಕೇಶನ್ ಬಳಕೆದಾರರಿಗೆ ತಮ್ಮ ಗಮ್ಯಸ್ಥಾನಕ್ಕಾಗಿ ಆಫ್ಲೈನ್ ನಕ್ಷೆಗಳು, ನಗರ ಮಾರ್ಗದರ್ಶಿಗಳು ಮತ್ತು ಟಿಕೆಟ್ ಮಾಹಿತಿಯನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲು ಅನುಮತಿಸಬಹುದು, ಅವರನ್ನು ದುಬಾರಿ ಅಂತರರಾಷ್ಟ್ರೀಯ ಡೇಟಾ ರೋಮಿಂಗ್ ಶುಲ್ಕಗಳಿಂದ ಉಳಿಸುತ್ತದೆ.
ಬ್ರೌಸರ್ ಹೊಂದಾಣಿಕೆ ಮತ್ತು ಭವಿಷ್ಯದ ದೃಷ್ಟಿಕೋನ
ಈ ಲೇಖನವನ್ನು ಬರೆಯುವ ಸಮಯದಲ್ಲಿ, ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ API ಯು ಮುಖ್ಯವಾಗಿ ಗೂಗಲ್ ಕ್ರೋಮ್ ಮತ್ತು ಮೈಕ್ರೋಸಾಫ್ಟ್ ಎಡ್ಜ್ನಂತಹ ಕ್ರೋಮಿಯಂ-ಆಧಾರಿತ ಬ್ರೌಸರ್ಗಳಲ್ಲಿ ಬೆಂಬಲಿತವಾಗಿದೆ. ಇತ್ತೀಚಿನ ಹೊಂದಾಣಿಕೆ ಮಾಹಿತಿಗಾಗಿ CanIUse.com ಅಥವಾ MDN ವೆಬ್ ಡಾಕ್ಸ್ನಂತಹ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಪರಿಶೀಲಿಸುವುದು ಮುಖ್ಯ. ಇನ್ನೂ ಸಾರ್ವತ್ರಿಕವಾಗಿ ಅಳವಡಿಸಿಕೊಳ್ಳದಿದ್ದರೂ, ಪ್ರಮುಖ ಬ್ರೌಸರ್ಗಳಲ್ಲಿ ಅದರ ಉಪಸ್ಥಿತಿಯು ಒಂದು ಮಹತ್ವದ ಹೆಜ್ಜೆಯನ್ನು ಗುರುತಿಸುತ್ತದೆ. ವೆಬ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ವಿಕಸನಗೊಳ್ಳುತ್ತಾ ಹೋದಂತೆ, ಈ ರೀತಿಯ API ಗಳು ವೆಬ್ ಮತ್ತು ನೇಟಿವ್ ಅಪ್ಲಿಕೇಶನ್ಗಳ ನಡುವಿನ ಸಾಮರ್ಥ್ಯದ ಅಂತರವನ್ನು ಮುಚ್ಚುತ್ತಿವೆ, ಶಕ್ತಿಯುತ, ಸ್ಥಿತಿಸ್ಥಾಪಕ, ಮತ್ತು ಜಾಗತಿಕವಾಗಿ ಪ್ರವೇಶಿಸಬಹುದಾದ PWA ಗಳ ಹೊಸ ಪೀಳಿಗೆಗೆ ದಾರಿ ಮಾಡಿಕೊಡುತ್ತಿವೆ.
ತೀರ್ಮಾನ: ಎಲ್ಲರಿಗೂ ಹೆಚ್ಚು ಸ್ಥಿತಿಸ್ಥಾಪಕ ವೆಬ್ ಅನ್ನು ನಿರ್ಮಿಸುವುದು
ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ API ಕೇವಲ ಫೈಲ್ಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡುವ ಸಾಧನವಲ್ಲ. ಇದು ನಾವು ನಿರ್ಮಿಸಲು ಬಯಸುವ ವೆಬ್ನ ಬಗ್ಗೆ ಒಂದು ಹೇಳಿಕೆಯಾಗಿದೆ: ಸ್ಥಿತಿಸ್ಥಾಪಕ, ಬಳಕೆದಾರ-ಕೇಂದ್ರಿತ, ಮತ್ತು ಎಲ್ಲರಿಗೂ ಕೆಲಸ ಮಾಡುವ, ಅವರ ಸಾಧನ ಅಥವಾ ಅವರ ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕದ ಗುಣಮಟ್ಟವನ್ನು ಲೆಕ್ಕಿಸದೆ. ದೊಡ್ಡ ವರ್ಗಾವಣೆಗಳನ್ನು ಬ್ರೌಸರ್ಗೆ ವಹಿಸುವ ಮೂಲಕ, ನಾವು ನಮ್ಮ ಬಳಕೆದಾರರನ್ನು ಪ್ರಗತಿ ಪಟ್ಟಿಯನ್ನು ನೋಡುವ ಆತಂಕದಿಂದ ಮುಕ್ತಗೊಳಿಸುತ್ತೇವೆ, ನಾವು ಅವರ ಡೇಟಾ ಮತ್ತು ಬ್ಯಾಟರಿಯನ್ನು ಉಳಿಸುತ್ತೇವೆ, ಮತ್ತು ನಾವು ದೃಢವಾದ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹವಾದ ಅನುಭವವನ್ನು ನೀಡುತ್ತೇವೆ.
ದೊಡ್ಡ ಫೈಲ್ ವರ್ಗಾವಣೆಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ನಿಮ್ಮ ಮುಂದಿನ ವೆಬ್ ಪ್ರಾಜೆಕ್ಟ್ ಅನ್ನು ನೀವು ಯೋಜಿಸುವಾಗ, ಸಾಂಪ್ರದಾಯಿಕ `fetch` ಅನ್ನು ಮೀರಿ ನೋಡಿ. ನಿಮ್ಮ ಬಳಕೆದಾರರ ಜಾಗತಿಕ ಸಂದರ್ಭವನ್ನು ಪರಿಗಣಿಸಿ ಮತ್ತು ನಿಜವಾದ ಆಧುನಿಕ, ಆಫ್ಲೈನ್-ಮೊದಲ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ಬ್ಯಾಕ್ಗ್ರೌಂಡ್ ಫೆಚ್ನ ಶಕ್ತಿಯನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳಿ. ವೆಬ್ನ ಭವಿಷ್ಯವು ನಿರಂತರ ಮತ್ತು ಸ್ಥಿತಿಸ್ಥಾಪಕವಾಗಿದೆ, ಮತ್ತು ಈಗ, ನಿಮ್ಮ ಡೌನ್ಲೋಡ್ಗಳು ಕೂಡ ಆಗಿರಬಹುದು.