আমি কীভাবে কোনও পরিষেবা কর্মীকে আনইনস্টল করব?


161

/serviceworker.jsআমার রুট ডিরেক্টরি থেকে মোছার পরে , ক্রোম এখনও সেই পরিষেবা কর্মী চালায় যা আমি আমার ওয়েবরুট থেকে সরিয়েছি। কীভাবে আমি আমার ওয়েবসাইট এবং Chrome থেকে পরিষেবা কর্মী আনইনস্টল করব যাতে আমি আমার ওয়েবসাইটে লগইন করতে পারি?

আমি সার্ভিস ওয়ার্কের ক্যাশে প্রক্রিয়াটিতে বিষয়টি সন্ধান করেছি এবং এটি ডিবাগ করার সময় না পাওয়া পর্যন্ত আমি আপাতত সরাতে চাই। আমি যে লগইন স্ক্রিপ্টটি ব্যবহার করছি তা তাদের গুগল অ্যাকাউন্টে লগইন করার জন্য গুগলের সার্ভারে পুনঃনির্দেশ ব্যবহার করে। তবে লগইন.এফপি পৃষ্ঠা থেকে আমার যা কিছু পাওয়া যায় তা একটি ERR_FAILEDবার্তা।


2
ফায়ারফক্সে আমারও একই সমস্যা আছে।
কোস্টা

উত্তর:


309

প্রোগ্রাম ওয়ারমেটিক সার্ভিস ওয়ার্কার্স সরানো

আপনি প্রোগ্রামের মতো পরিষেবা কর্মীদের অপসারণ করতে পারেন:

navigator.serviceWorker.getRegistrations().then(function(registrations) {
 for(let registration of registrations) {
  registration.unregister()
} })

দস্তাবেজ: getRegistrations , নিবন্ধন মুক্ত

ব্যবহারকারী ইন্টারফেসের মাধ্যমে পরিষেবা কর্মীদের অপসারণ করা

আপনি ক্রোম ডিভলটুলগুলিতে অ্যাপ্লিকেশন ট্যাবের অধীনে পরিষেবা কর্মীদের অপসারণ করতে পারেন।


2
আমাকে "ব্যবহার কঠোর" যুক্ত করতে হয়েছিল; এই কোডটি কাজ করার আগে।
কোডকনামি

8
এটিকে ঘিরে যে কোনও সময় সময় ভিত্তিক আছে? বলুন যে কোনও ব্যবহারকারী একবার পরিদর্শন করেছেন, কর্মীকে নিবন্ধভুক্ত করেছেন, এবং তারপর থেকে ফিরে আসেননি, আমাকে কি কেবল এই ক্ষেত্রে এই কোডটি আমাদের কোডবেসে চিরতরে রাখতে হবে?
লগানফস্মিথ


10
আমার এই ব্লগ পোস্টটি পর্যালোচনা করে আছে এবং অন্যান্য পরিষেবা কর্মী অপশন অপসারণ / আনইনস্টল পছন্দগুলি love2dev.com/blog/how-to-uninstall-a-service-worker
ক্রিস লাভ

3
কীভাবে সাহায্য করবে? পৃষ্ঠাটি ইতিমধ্যে ইনস্টল করা কর্মী দ্বারা ক্যাশে হয়েছে এবং ব্যবহারকারীদের দ্বারা আপনার নতুন স্ক্রিপ্ট কখনই আনা হবে না।
রিভ

107

আপনি ইউআরএল: ক্রোম: // সার্ভিস ওয়ার্কার-ইন্টারনালস / এবং সেখান থেকে কোনও সার্ভিস ওয়ার্কারকে নিবন্ধন করতে পারেন to


9
আপনি এগুলি সবগুলিকে একসাথে ঝুলিতে নিবন্ধন করতে ডেভ কনসোলে টাইপ করতে পারেন। document.querySelectorAll(".unregister").forEach(item=>item.click())
সেনবোন

তবে, আপনার যদি অন্যান্য দর্শনার্থীও থাকতে হয় তবে আপনারও নিবন্ধন করতে হবে (বন্ধু, ব্যবহারকারী, প্রজেক্ট ম্যানেজার ইত্যাদি), উপরের উত্তরটি (ড্যানিয়েল হের দ্বারা) একটি কার্যকর সমাধান বেশি। আপনি ফায়ারফক্স, এজ এবং সাফারি পেয়েছেন, পাশাপাশি প্রতিটি পরীক্ষার জন্য আইওএস, অ্যান্ড্রয়েড, ম্যাকোস, উইন্ডোজ 10 এর স্বাদেও পেয়েছেন।
স্টিভেন ভেন্টিমাগ্লিয়া

'('। নিবন্ধনবিহীন ') forএর জন্য (আইটেম => আইটেম ক্লিক করুন ())
ট্রাভনিকভ.দেব

37

আপনি ক্রোম বিকাশকারী সরঞ্জামের পাশাপাশি প্রোগ্রাম্যাটিক মাধ্যমে এটি করতে পারেন ।

  1. টাইপ করে সমস্ত চলমান উদাহরণ বা পরিষেবা কর্মী সন্ধান করুন

    ক্রোম: // ServiceWorker-অভ্যন্তরীণ /

    একটি নতুন ট্যাবে এবং তারপরে নিবন্ধভুক্ত করতে চাইলে এমন সার্ভিয়ার নির্বাচন করুন।

  2. বিকাশকারী সরঞ্জাম (F12) খুলুন এবং অ্যাপ্লিকেশন নির্বাচন করুন। তারপরে হয়

    স্টোরেজ সাফ করুন নির্বাচন করুন -> নিবন্ধভুক্ত পরিষেবা কর্মী

    অথবা

    পরিষেবা কর্মীদের নির্বাচন করুন -> পুনঃলোডের উপর আপডেট চয়ন করুন

  3. Programatically

if(window.navigator && navigator.serviceWorker) {
  navigator.serviceWorker.getRegistrations()
  .then(function(registrations) {
    for(let registration of registrations) {
      registration.unregister();
    }
  });
}


22

গুগল ক্রোমে আপনি বিকাশকারী সরঞ্জামগুলিতে (F12) -> অ্যাপ্লিকেশন -> পরিষেবা কর্মী যেতে পারেন এবং সেই নির্দিষ্ট ডোমেনের তালিকা থেকে পরিষেবা কর্মীদের নিবন্ধভুক্ত করতে পারেন।

স্ক্রিনশট

এই পদ্ধতিটি কোনও সাইটের বিকাশের মোডে কার্যকর এবং বেশিরভাগ ক্ষেত্রে এগুলি চালিত হয় localhostযা আপনাকে অন্য প্রকল্পের বিকাশের জন্য প্রয়োজন হতে পারে।


5

আপনার ডিভাইসে দুটি এপিআই সনাক্ত করা উচিত: getRegistrations এবং getRegifications । পরিষেবা-কর্মীর সমস্ত প্ল্যাটফর্মগুলিতে API এর একটি অনন্য সেট নেই। উদাহরণস্বরূপ, কিছু ব্রাউজারে কেবল একটি navigator.serviceWorker.getRegistration, না থাকে navigator.serviceWorker.getRegistrations। সুতরাং আপনি উভয় সঙ্গে বিবেচনা করা উচিত।


3

এফওয়াইআই, আপনি যদি ম্যাকওএস সাফারি ব্রাউজার ব্যবহার করছেন তবে কোনও পরিষেবা কর্মীকে জোর করে নিবন্ধন করার একটি উপায় রয়েছে (সাফারি 12.1 এর জন্য পদক্ষেপ এবং চিত্র):

  1. সাফারি> পছন্দসমূহ ...> গোপনীয়তা> ওয়েবসাইট ডেটা পরিচালনা করুন ... সাফারি পছন্দসমূহ: গোপনীয়তা

  2. ডোমেন নাম প্রবেশ করান (উদা। 'লোকালহোস্ট'), "সরান" ক্লিক করুন সাফারি পছন্দসমূহ: গোপনীয়তা: ওয়েবসাইট ডেটা পরিচালনা করুন

দ্রষ্টব্য: পরিষেবা কর্মীদের পাশাপাশি, এটি এই ডোমেনটির সমস্ত ক্যাশে, কুকিজ এবং ডেটাবেসও মুছে ফেলবে।


দেখে মনে হচ্ছে সার্ভিস কর্মীরা বেসরকারী উইন্ডোর মাধ্যমে ইনস্টল করা থাকলে এটি কাজ করে না।
এরিস

3

ইতিমধ্যে প্রদত্ত সঠিক উত্তরগুলি ছাড়াও, আপনি যদি এসডাব্লু ক্যাশে মুছতে চান তবে আপনি নীচের পদ্ধতিটিতে আবেদন করতে পারেন:

if ('caches' in window) {
    caches.keys()
      .then(function(keyList) {
          return Promise.all(keyList.map(function(key) {
              return caches.delete(key);
          }));
      })
}


আরো এই প্রবন্ধে (অনুচ্ছেদ: "একটি সেবা কর্মী নিবন্ধন মুক্ত")


ব্রাউজারের মাধ্যমে আরেকটি সম্ভাবনা হ'ল "ক্যাশে সঞ্চয়স্থান" বিভাগটি অ্যাক্সেস করে "সাইটের ডেটা সাফ করুন" বোতামটিতে ক্লিক করুন:

এখানে চিত্র বর্ণনা লিখুন


0

নিরাপদে পরিষেবা কর্মীকে আনইনস্টল করুন

if ('serviceWorker' in navigator) {
      navigator.serviceWorker.getRegistrations().then(function (registrations) {
        for (const registration of registrations) {
          // unregister service worker
          console.log('serviceWorker unregistered');
          registration.unregister();
        }
      });
    }

0

পরিষেবা কর্মী সনাক্ত করতে:

navigator.serviceWorker.controller

পরিষেবা কর্মী মোছার জন্য কোড:

navigator.serviceWorker.getRegistrations()
  .then(registrations => {
    registrations.forEach(registration => {
      registration.unregister();
    })
  });

  navigator.serviceWorker.getRegistrations().then(function(registrations) {
   for(let registration of registrations) {
    registration.unregister()
  } })

  if(window.navigator && navigator.serviceWorker) {
    navigator.serviceWorker.getRegistrations()
    .then(function(registrations) {
      for(let registration of registrations) {
        registration.unregister();
      }
    });
  }

  if ('caches' in window) {
      caches.keys()
        .then(function(keyList) {
            return Promise.all(keyList.map(function(key) {
                return caches.delete(key);
            }));
        })
  }

  if ('serviceWorker' in navigator) {
        navigator.serviceWorker.getRegistrations().then(function (registrations) {
          for (const registration of registrations) {
            // unregister service worker
            console.log('serviceWorker unregistered');
            registration.unregister();

            setTimeout(function(){
              console.log('trying redirect do');
              window.location.replace(window.location.href); // because without redirecting, first time on page load: still service worker will be available
            }, 3000);
          }
        });
      }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.