தமிழ்

சர்விஸ் வொர்க்கர் பேக்கிரவுண்டு சின்க் மூலம் வலுவான, நம்பகமான ஆஃப்லைன் அனுபவங்களை உருவாக்குங்கள். உலகளாவிய பார்வையாளர்களுக்கான செயல்படுத்தும் நுட்பங்கள், சிறந்த நடைமுறைகள், மேம்பட்ட உத்திகளை அறிக.

சர்விஸ் வொர்க்கர்களில் தேர்ச்சி பெறுதல்: பேக்கிரவுண்டு சின்க் பற்றிய ஒரு ஆழமான பார்வை

இன்றைய இணைக்கப்பட்ட உலகில், பயனர்கள் தங்கள் இணைய இணைப்பு நம்பகமற்றதாக இருக்கும்போதும், தடையற்ற அனுபவங்களை எதிர்பார்க்கிறார்கள். சர்விஸ் வொர்க்கர்கள் ஆஃப்லைன்-முதல் பயன்பாடுகளை உருவாக்குவதற்கான அடித்தளத்தை வழங்குகின்றன, மேலும் பேக்கிரவுண்டு சின்க் இந்த திறனை ஒரு படி மேலே கொண்டு செல்கிறது. இந்த விரிவான வழிகாட்டி பேக்கிரவுண்டு சின்க்-இன் நுணுக்கங்களை ஆராய்ந்து, உலகெங்கிலும் உள்ள டெவலப்பர்களுக்கு நடைமுறை நுண்ணறிவுகளையும் செயல்படுத்தும் உத்திகளையும் வழங்குகிறது.

சர்விஸ் வொர்க்கர் பேக்கிரவுண்டு சின்க் என்றால் என்ன?

பேக்கிரவுண்டு சின்க் என்பது ஒரு வலை ஏபிஐ (API) ஆகும், இது பயனர் நிலையான நெட்வொர்க் இணைப்பைப் பெறும் வரை செயல்களை ஒத்திவைக்க சர்விஸ் வொர்க்கர்களை அனுமதிக்கிறது. ஒரு பயனர் விட்டுவிட்டு வரும் இணைய அணுகல் உள்ள ரயிலில் ஒரு மின்னஞ்சலை எழுதுவதை கற்பனை செய்து பாருங்கள். பேக்கிரவுண்டு சின்க் இல்லாமல், மின்னஞ்சல் அனுப்பத் தவறக்கூடும், இது ஒரு வெறுப்பூட்டும் அனுபவத்திற்கு வழிவகுக்கும். பேக்கிரவுண்டு சின்க், இணைப்பு மீட்டமைக்கப்படும்போது மின்னஞ்சல் வரிசைப்படுத்தப்பட்டு தானாக அனுப்பப்படுவதை உறுதி செய்கிறது.

முக்கிய நன்மைகள்:

பேக்கிரவுண்டு சின்க் எவ்வாறு செயல்படுகிறது

இந்த செயல்முறை பல படிகளை உள்ளடக்கியது:

  1. பதிவு: உங்கள் வலைச் செயலி சர்விஸ் வொர்க்கருடன் ஒரு ஒத்திசைவு நிகழ்வைப் பதிவு செய்கிறது. இது ஒரு பயனர் செயலால் (எ.கா., ஒரு படிவத்தைச் சமர்ப்பித்தல்) அல்லது நிரல்ரீதியாகத் தூண்டப்படலாம்.
  2. ஒத்திவைத்தல்: நெட்வொர்க் கிடைக்கவில்லை என்றால், சர்விஸ் வொர்க்கர் ஒரு இணைப்பு கண்டறியப்படும் வரை ஒத்திசைவு நிகழ்வை ஒத்திவைக்கிறது.
  3. ஒத்திசைவு: உலாவி ஒரு நிலையான நெட்வொர்க் இணைப்பைக் கண்டறியும்போது, அது சர்விஸ் வொர்க்கரை எழுப்பி ஒத்திசைவு நிகழ்வை அனுப்புகிறது.
  4. செயல்படுத்துதல்: சர்விஸ் வொர்க்கர் ஒத்திசைவு நிகழ்வோடு தொடர்புடைய குறியீட்டை இயக்குகிறது, பொதுவாக ஒரு சர்வருக்கு தரவை அனுப்புகிறது.
  5. மறு முயற்சிகள்: ஒத்திசைவு தோல்வியுற்றால் (எ.கா., சர்வர் பிழை காரணமாக), உலாவி தானாகவே ஒத்திசைவு நிகழ்வை பின்னர் மீண்டும் முயற்சிக்கும்.

பேக்கிரவுண்டு சின்க்-ஐ செயல்படுத்துதல்: ஒரு படிப்படியான வழிகாட்டி

படி 1: சின்க் நிகழ்வுகளுக்கு பதிவு செய்தல்

முதல் படி ஒரு பெயரிடப்பட்ட சின்க் நிகழ்வைப் பதிவு செய்வதாகும். இது பொதுவாக உங்கள் வலைச் செயலியின் ஜாவாஸ்கிரிப்ட் குறியீட்டிற்குள் செய்யப்படுகிறது. இதோ ஒரு எடுத்துக்காட்டு:


  navigator.serviceWorker.ready.then(function(swRegistration) {
    return swRegistration.sync.register('my-sync');
  }).then(function() {
    console.log('Sync registered!');
  }).catch(function() {
    console.log('Sync registration failed!');
  });

உங்கள் சின்க் நிகழ்விற்கான விளக்கமான பெயருடன் 'my-sync'-ஐ மாற்றவும். இந்த பெயர் உங்கள் சர்விஸ் வொர்க்கரில் நிகழ்வை அடையாளம் காணப் பயன்படுத்தப்படும்.

படி 2: சர்விஸ் வொர்க்கரில் சின்க் நிகழ்வுகளைக் கையாளுதல்

அடுத்து, உங்கள் சர்விஸ் வொர்க்கரில் சின்க் நிகழ்வைக் கேட்டு, ஒத்திசைவு தர்க்கத்தைக் கையாள வேண்டும். இதோ ஒரு எடுத்துக்காட்டு:


  self.addEventListener('sync', function(event) {
    if (event.tag === 'my-sync') {
      event.waitUntil(
        doSomeStuff()
      );
    }
  });

  function doSomeStuff() {
    return new Promise(function(resolve, reject) {
        // உண்மையான சின்க் தர்க்கத்தை இங்கே செய்யவும்
        // எடுத்துக்காட்டு: சர்வருக்கு தரவை அனுப்புதல்
        fetch('/api/data', {
          method: 'POST',
          body: JSON.stringify({data: 'some data'})
        }).then(function(response) {
          if (response.ok) {
            console.log('Sync successful!');
            resolve();
          } else {
            console.error('Sync failed:', response.status);
            reject();
          }
        }).catch(function(error) {
          console.error('Sync error:', error);
          reject();
        });
    });
  }

விளக்கம்:

படி 3: ஒத்திசைவிற்காக தரவை சேமித்தல்

பல சந்தர்ப்பங்களில், பயனர் ஆஃப்லைனில் இருக்கும்போது தரவை உள்ளூரில் சேமித்து, பின்னர் இணைப்பு கிடைக்கும்போது அதை ஒத்திசைக்க வேண்டும். IndexedDB என்பது ஆஃப்லைனில் கட்டமைக்கப்பட்ட தரவைச் சேமிப்பதற்கான ஒரு சக்திவாய்ந்த உலாவி API ஆகும்.

எடுத்துக்காட்டு: IndexedDB-இல் படிவத் தரவைச் சேமித்தல்


  // IndexedDB-இல் படிவத் தரவைச் சேமிப்பதற்கான செயல்பாடு
  function storeFormData(data) {
    return new Promise(function(resolve, reject) {
      let request = indexedDB.open('my-db', 1);

      request.onerror = function(event) {
        console.error('IndexedDB error:', event);
        reject(event);
      };

      request.onupgradeneeded = function(event) {
        let db = event.target.result;
        let objectStore = db.createObjectStore('form-data', { keyPath: 'id', autoIncrement: true });
      };

      request.onsuccess = function(event) {
        let db = event.target.result;
        let transaction = db.transaction(['form-data'], 'readwrite');
        let objectStore = transaction.objectStore('form-data');

        let addRequest = objectStore.add(data);

        addRequest.onsuccess = function(event) {
          console.log('Form data stored in IndexedDB');
          resolve();
        };

        addRequest.onerror = function(event) {
          console.error('Error storing form data:', event);
          reject(event);
        };

        transaction.oncomplete = function() {
          db.close();
        };
      };
    });
  }

  // IndexedDB-லிருந்து அனைத்து படிவத் தரவையும் மீட்டெடுப்பதற்கான செயல்பாடு
  function getAllFormData() {
    return new Promise(function(resolve, reject) {
      let request = indexedDB.open('my-db', 1);

      request.onerror = function(event) {
        console.error('IndexedDB error:', event);
        reject(event);
      };

      request.onsuccess = function(event) {
        let db = event.target.result;
        let transaction = db.transaction(['form-data'], 'readonly');
        let objectStore = transaction.objectStore('form-data');
        let getAllRequest = objectStore.getAll();

        getAllRequest.onsuccess = function(event) {
          let formData = event.target.result;
          resolve(formData);
        };

        getAllRequest.onerror = function(event) {
          console.error('Error retrieving form data:', event);
          reject(event);
        };

        transaction.oncomplete = function() {
          db.close();
        };
      };
    });
  }

  // எடுத்துக்காட்டு பயன்பாடு: படிவம் சமர்ப்பிக்கப்படும்போது
  document.getElementById('myForm').addEventListener('submit', function(event) {
    event.preventDefault();

    let formData = {
      name: document.getElementById('name').value,
      email: document.getElementById('email').value,
      message: document.getElementById('message').value
    };

    storeFormData(formData)
      .then(function() {
        // விருப்பமாக, தரவை பின்னர் அனுப்ப ஒரு சின்க் நிகழ்வைப் பதிவு செய்யவும்
        navigator.serviceWorker.ready.then(function(swRegistration) {
          return swRegistration.sync.register('form-submission');
        });
      })
      .catch(function(error) {
        console.error('Error storing form data:', error);
      });
  });

படி 4: தரவு ஒத்திசைவைக் கையாளுதல்

சர்விஸ் வொர்க்கருக்குள், IndexedDB-லிருந்து அனைத்து படிவத் தரவையும் மீட்டெடுத்து சர்வருக்கு அனுப்பவும்.


  self.addEventListener('sync', function(event) {
    if (event.tag === 'form-submission') {
      event.waitUntil(
        getAllFormData()
          .then(function(formData) {
            // ஒவ்வொரு படிவத் தரவையும் சர்வருக்கு அனுப்பவும்
            return Promise.all(formData.map(function(data) {
              return fetch('/api/form-submission', {
                method: 'POST',
                body: JSON.stringify(data),
                headers: {
                  'Content-Type': 'application/json'
                }
              })
              .then(function(response) {
                if (response.ok) {
                  // தரவு வெற்றிகரமாக அனுப்பப்பட்டது, அதை IndexedDB-லிருந்து நீக்கவும்
                  return deleteFormData(data.id);
                } else {
                  console.error('Failed to send form data:', response.status);
                  throw new Error('Failed to send form data'); // இது ஒரு மறு முயற்சியைத் தூண்டும்
                }
              });
            }));
          })
          .then(function() {
            console.log('All form data synced successfully!');
          })
          .catch(function(error) {
            console.error('Error syncing form data:', error);
          })
      );
    }
  });

  function deleteFormData(id) {
    return new Promise(function(resolve, reject) {
        let request = indexedDB.open('my-db', 1);

        request.onerror = function(event) {
          console.error('IndexedDB error:', event);
          reject(event);
        };

        request.onsuccess = function(event) {
          let db = event.target.result;
          let transaction = db.transaction(['form-data'], 'readwrite');
          let objectStore = transaction.objectStore('form-data');
          let deleteRequest = objectStore.delete(id);

          deleteRequest.onsuccess = function(event) {
            console.log('Form data deleted from IndexedDB');
            resolve();
          };

          deleteRequest.onerror = function(event) {
            console.error('Error deleting form data:', event);
            reject(event);
          };

          transaction.oncomplete = function() {
            db.close();
          };
        };
    });
  }

மேம்பட்ட பேக்கிரவுண்டு சின்க் உத்திகள்

குறிப்பிட்ட கால பேக்கிரவுண்டு சின்க்

குறிப்பிட்ட கால பேக்கிரவுண்டு சின்க் (Periodic Background Sync), பயனர் பயன்பாட்டைத் தீவிரமாகப் பயன்படுத்தாத போதும், வழக்கமான இடைவெளியில் ஒத்திசைவு நிகழ்வுகளைத் திட்டமிட உங்களை அனுமதிக்கிறது. சமீபத்திய செய்தித் தலைப்புகளைப் பெறுவது அல்லது தற்காலிகமாக சேமிக்கப்பட்ட தரவைப் புதுப்பிப்பது போன்ற பணிகளுக்கு இது பயனுள்ளதாக இருக்கும். இந்த அம்சத்திற்கு பயனர் அனுமதி மற்றும் HTTPS தேவை.

பதிவு:


  navigator.serviceWorker.ready.then(function(swRegistration) {
    return swRegistration.periodicSync.register('periodic-sync', {
      minInterval: 24 * 60 * 60 * 1000, // 1 நாள்
    });
  });

நிகழ்வைக் கையாளுதல்:


  self.addEventListener('periodicsync', function(event) {
    if (event.tag === 'periodic-sync') {
      event.waitUntil(
        // குறிப்பிட்ட கால சின்க் பணியைச் செய்யவும்
        updateNewsHeadlines()
      );
    }
  });

நெட்வொர்க் நிலையை கண்டறிதல்

தரவை ஒத்திசைக்க முயற்சிக்கும் முன் நெட்வொர்க் நிலையைச் சரிபார்ப்பது முக்கியம். `navigator.onLine` பண்பு உலாவி தற்போது ஆன்லைனில் உள்ளதா என்பதைக் குறிக்கிறது. நெட்வொர்க் இணைப்பில் ஏற்படும் மாற்றங்களைக் கண்டறிய `online` மற்றும் `offline` நிகழ்வுகளையும் நீங்கள் கேட்கலாம்.


  window.addEventListener('online',  function(e) {
    console.log("Went online");
  });

  window.addEventListener('offline', function(e) {
    console.log("Went offline");
  });

மறு முயற்சி உத்திகள்

பேக்கிரவுண்டு சின்க் தானியங்கி மறு முயற்சி வழிமுறைகளை வழங்குகிறது. ஒரு ஒத்திசைவு தோல்வியுற்றால், உலாவி பின்னர் நிகழ்வை மீண்டும் முயற்சிக்கும். `networkState` மற்றும் `maximumRetryTime` விருப்பங்களைப் பயன்படுத்தி மறு முயற்சி நடத்தையை நீங்கள் கட்டமைக்கலாம்.

பேக்கிரவுண்டு சின்க்-கிற்கான சிறந்த நடைமுறைகள்

பேக்கிரவுண்டு சின்க்-கிற்கான உலகளாவிய கருத்தாய்வுகள்

உலகளாவிய பார்வையாளர்களுக்காக பயன்பாடுகளை உருவாக்கும்போது, பின்வருவனவற்றைக் கருத்தில் கொள்ளுங்கள்:

பேக்கிரவுண்டு சின்க்-இன் பயன்பாட்டு வழக்குகள்

பேக்கிரவுண்டு சின்க்-ஐ பிழைத்திருத்தம் செய்தல்

Chrome DevTools சர்விஸ் வொர்க்கர்கள் மற்றும் பேக்கிரவுண்டு சின்க்-ஐ பிழைத்திருத்தம் செய்வதற்கு சிறந்த ஆதரவை வழங்குகிறது. சர்விஸ் வொர்க்கரின் நிலையை ஆய்வு செய்யவும், சின்க் நிகழ்வுகளைப் பார்க்கவும், ஆஃப்லைன் நிலைகளை உருவகப்படுத்தவும் நீங்கள் Application பேனலைப் பயன்படுத்தலாம்.

பேக்கிரவுண்டு சின்க்-கிற்கு மாற்றுகள்

பேக்கிரவுண்டு சின்க் ஒரு சக்திவாய்ந்த கருவியாக இருந்தாலும், ஆஃப்லைன் தரவு ஒத்திசைவைக் கையாள்வதற்கு மாற்று அணுகுமுறைகள் உள்ளன:

முடிவுரை

சர்விஸ் வொர்க்கர் பேக்கிரவுண்டு சின்க் என்பது சவாலான நெட்வொர்க் நிலைகளிலும் கூட தடையற்ற பயனர் அனுபவத்தை வழங்கும் வலுவான மற்றும் நம்பகமான வலைப் பயன்பாடுகளை உருவாக்குவதற்கான ஒரு மதிப்புமிக்க கருவியாகும். இந்த வழிகாட்டியில் கோடிட்டுக் காட்டப்பட்டுள்ள கருத்துகளையும் நுட்பங்களையும் புரிந்துகொள்வதன் மூலம், உங்கள் பயன்பாடுகளை மேம்படுத்தவும் உலகளாவிய பார்வையாளர்களைப் பூர்த்தி செய்யவும் பேக்கிரவுண்டு சின்க்-ஐ திறம்படப் பயன்படுத்தலாம்.

பேக்கிரவுண்டு சின்க்-ஐ செயல்படுத்தும்போது பயனர் அனுபவத்திற்கு முன்னுரிமை அளிக்கவும், பிழைகளை நளினமாகக் கையாளவும், பேட்டரி தாக்கத்தைக் கவனத்தில் கொள்ளவும் நினைவில் கொள்ளுங்கள். சிறந்த நடைமுறைகளைப் பின்பற்றி, உலகளாவிய காரணிகளைக் கருத்தில் கொள்வதன் மூலம், உலகெங்கிலும் உள்ள பயனர்களுக்கு உண்மையிலேயே அணுகக்கூடிய மற்றும் நம்பகமான பயன்பாடுகளை நீங்கள் உருவாக்கலாம்.

வலைத் தொழில்நுட்பங்கள் வளர்ச்சியடையும்போது, சமீபத்திய முன்னேற்றங்கள் குறித்து அறிந்திருப்பது முக்கியம். சர்விஸ் வொர்க்கர்கள் மற்றும் பேக்கிரவுண்டு சின்க்-கிற்கான அதிகாரப்பூர்வ ஆவணங்களை ஆராய்ந்து, உங்கள் குறிப்பிட்ட தேவைகளுக்கு சிறந்த அணுகுமுறையைக் கண்டறிய வெவ்வேறு செயல்படுத்தல் உத்திகளுடன் பரிசோதனை செய்யுங்கள். ஆஃப்லைன்-முதல் மேம்பாட்டின் சக்தி உங்கள் கைகளில் உள்ளது - அதைத் தழுவுங்கள்!