সুতরাং আপনি একটি প্রগতিশীল ওয়েব অ্যাপ পেয়েছেন, একজন পরিষেবা কর্মী দিয়ে সম্পূর্ণ যা এটিকে অফলাইনে কাজ করতে দেয়৷ দারুণ! আপনি আপনার ওয়েব অ্যাপের জন্য বিদ্যমান Google অ্যানালিটিক্স সেট আপও পেয়েছেন, এবং আপনি অফলাইনে থাকাকালীন ব্যবহার থেকে আসা কোনো বিশ্লেষণাত্মক অন্তর্দৃষ্টি মিস করতে চান না। কিন্তু আপনি অফলাইনে থাকা অবস্থায় Google Analytics-এ ডেটা পাঠানোর চেষ্টা করলে, সেই অনুরোধগুলি ব্যর্থ হবে এবং ডেটা হারিয়ে যাবে।
সমাধান, এটা জানতে আপনি অবাক হবেন না, সেবা কর্মীরা! বিশেষত, এটি Google Analytics অনুরোধগুলি ( IndexedDB
ব্যবহার করে) সঞ্চয় করার জন্য আপনার পরিষেবা কর্মীকে কোড যোগ করছে এবং আশা করা যায় যে কোনও নেটওয়ার্ক উপলব্ধ থাকলে সেগুলি পরে আবার চেষ্টা করুন৷ আমরা ওপেন সোর্স Google I/O ওয়েব অ্যাপের অংশ হিসাবে এই যুক্তিটি পরিচালনা করার জন্য কোড ভাগ করেছি , কিন্তু বুঝতে পেরেছি এটি একটি দরকারী প্যাটার্ন, এবং কোড অনুলিপি এবং আটকানো ভঙ্গুর হতে পারে৷
আজ, আমরা ঘোষণা করতে পেরে আনন্দিত যে আপনার পরিষেবা কর্মীর মধ্যে অফলাইন গুগল অ্যানালিটিক্সের অনুরোধগুলি পরিচালনা করার জন্য আপনার যা প্রয়োজন তা একটি npm প্যাকেজে বান্ডিল করা হয়েছে: npm install --save-dev sw-offline-google-analytics
sw-offline-google-analytics ব্যবহার করে
আপনার বিদ্যমান পরিষেবা কর্মী কোডের মধ্যে থেকে, নিম্নলিখিত যোগ করুন:
// This code should live inside your service worker JavaScript, ideally
// before any other 'fetch' event handlers are defined:
// First, import the library into the service worker global scope:
importScripts('path/to/offline-google-analytics-import.js');
// Then, call goog.offlineGoogleAnalytics.initialize():
// See https://github.com/GoogleChrome/workbox/tree/main/packages/workbox-google-analytics
goog.offlineGoogleAnalytics.initialize();
// At this point, implement any other service worker caching strategies
// appropriate for your web app.
যে এটা আছে সব!
ফণা অধীনে কি হচ্ছে?
sw-offline-google-analytics
আপনার পরিষেবা কর্মীতে একটি নতুন fetch
ইভেন্ট হ্যান্ডলার সেট আপ করে, যা Google Analytics ডোমেনে করা অনুরোধের প্রতিক্রিয়া জানায়। (লাইব্রেরি নন-Google অ্যানালিটিক্সের অনুরোধগুলিকে উপেক্ষা করে, আপনার পরিষেবা কর্মীর অন্যান্য fetch
ইভেন্ট হ্যান্ডলারদের সেই সংস্থানগুলির জন্য উপযুক্ত কৌশল প্রয়োগ করার সুযোগ দেয়।) এটি প্রথমে নেটওয়ার্কের বিরুদ্ধে অনুরোধটি পূরণ করার চেষ্টা করবে। ব্যবহারকারী অনলাইন হলে, এটি স্বাভাবিক হিসাবে এগিয়ে যাবে।
যদি নেটওয়ার্ক অনুরোধ ব্যর্থ হয় , লাইব্রেরি স্বয়ংক্রিয়ভাবে IndexedDB
তে অনুরোধ সম্পর্কে তথ্য সঞ্চয় করবে, সাথে একটি টাইমস্ট্যাম্প নির্দেশ করে যে অনুরোধটি প্রাথমিকভাবে করা হয়েছিল। প্রতিবার আপনার পরিষেবা কর্মী শুরু হলে , লাইব্রেরি সারিবদ্ধ অনুরোধগুলি পরীক্ষা করবে এবং কিছু অতিরিক্ত Google Analytics প্যারামিটার সহ সেগুলি পুনরায় পাঠানোর চেষ্টা করবে :
- একটি
qt
পরামিতি , মূল সময় সঠিকভাবে দায়ী করা হয়েছে তা নিশ্চিত করার জন্য অনুরোধটি প্রাথমিকভাবে চেষ্টা করার পর থেকে যে পরিমাণ সময় কেটে গেছে তার জন্য সেট করা হয়। -
goog.offlineGoogleAnalytics.initialize()
এ পাস করা কনফিগারেশন অবজেক্টেরparameterOverrides
প্রপার্টিতে সরবরাহ করা যেকোনো অতিরিক্ত প্যারামিটার এবং মান। উদাহরণস্বরূপ, পরিষেবা কর্মীর কাছ থেকে যে অনুরোধগুলিকে অবিলম্বে পাঠানো হয়েছিল তাদের থেকে আলাদা করার জন্য আপনি একটি কাস্টম মাত্রা অন্তর্ভুক্ত করতে পারেন৷
অনুরোধ পুনরায় পাঠানো সফল হলে, তারপর মহান! অনুরোধটি IndexedDB থেকে সরানো হয়েছে। যদি পুনঃপ্রচেষ্টা ব্যর্থ হয়, এবং প্রাথমিক অনুরোধটি 24 ঘন্টারও কম আগে করা হয়েছিল, তাহলে পরের বার পরিষেবা কর্মী শুরু করার সময় এটিকে IndexedDB
তে রাখা হবে। আপনার মনে রাখা উচিত যে Google অ্যানালিটিক্সের চার ঘণ্টার বেশি পুরানো হিটগুলি প্রক্রিয়া করার গ্যারান্টি দেওয়া হয় না, তবে কিছুটা পুরানো হিটগুলিকে পুনরায় পাঠালে "কেবল ক্ষেত্রে" আঘাত করা উচিত নয়৷
sw-offline-google-analytics
এছাড়াও Google Analytics বুটস্ট্র্যাপ করার জন্য প্রয়োজনীয় analytics.js
জাভাস্ক্রিপ্ট কোডের জন্য একটি "নেটওয়ার্ক প্রথমে, ক্যাশে ফিরে আসার" কৌশল প্রয়োগ করে ।
আসতে আরো আছে!
sw-offline-google-analytics
হল বৃহত্তর sw-helpers
প্রকল্পের অংশ, যা লাইব্রেরির একটি সংগ্রহ যা বিদ্যমান পরিষেবা কর্মী বাস্তবায়নে ড্রপ-ইন বর্ধিতকরণ প্রদানের উদ্দেশ্যে।
এছাড়াও সেই প্রকল্পের অংশ হল sw-appcache-behavior
, একটি লাইব্রেরি যা একটি পরিষেবা কর্মীর ভিতরে বিদ্যমান AppCache ম্যানিফেস্টে সংজ্ঞায়িত ক্যাশিং কৌশলগুলি প্রয়োগ করে৷ অন্তত প্রাথমিকভাবে একটি সামঞ্জস্যপূর্ণ ক্যাশিং কৌশল বজায় রেখে আপনাকে AppCache থেকে পরিষেবা কর্মীদের কাছে স্থানান্তরিত করতে সহায়তা করার উদ্দেশ্যে এটি।
আপনার যদি অন্য লাইব্রেরি ধারনা থাকে, আমরা আপনার কাছ থেকে শুনতে চাই। তাই ইস্যু ট্র্যাকারে একটি অনুরোধ ফাইল করুন!