Google কিভাবে stale-while-revalidate-এর মাধ্যমে বিজ্ঞাপনের কার্যক্ষমতা উন্নত করেছে

জোনাথন ইম্পেরিওসি
Jonathon Imperiosi

এই কেস স্টাডিটি তুলে ধরেছে যে কীভাবে থার্ড-পার্টি রিসোর্সের পারফরম্যান্স উন্নত করা ব্যবসায়িক মেট্রিকসকে ত্বরান্বিত করতে পারে। পূর্ববর্তী একটি গবেষণায় যেখানে অতিরিক্ত বিজ্ঞাপনের লেটেন্সির খরচ পরিমাপ করা হয়েছিল, সেখানে এই গবেষণাটি বাস্তব জগতের পারফরম্যান্স উন্নতির গুরুত্ব প্রদর্শন করে:

০.৫ %

প্রকাশকদের জন্য রাজস্ব বৃদ্ধি

%

প্রাথমিক বিজ্ঞাপন স্ক্রিপ্ট লোড বৃদ্ধি

উৎস: গুগলের অভ্যন্তরীণ তথ্য, জুন থেকে জুলাই ২০১৯।

পটভূমি

গুগল পাবলিশার ট্যাগ (GPT) হলো গুগল অ্যাড ম্যানেজারের জন্য একটি অ্যাড ট্যাগিং স্ক্রিপ্ট, যা ওয়েবে ডিসপ্লে অ্যাডের অনুরোধ করে এবং তা প্রদর্শন করে। GPT-এর জন্য একটি stale-while-revalidate HTTP হেডার প্রয়োগ করার মাধ্যমে, GPT টিম তাদের পাবলিশার পার্টনারদের জন্য গুগল ডিসপ্লে অ্যাডের গতি এবং পারফরম্যান্স উন্নত করতে সক্ষম হয়েছিল। এই একই কৌশল অন্য যেকোনো পরিস্থিতিতেও প্রয়োগ করা যেতে পারে, যেখানে সবচেয়ে নতুন কোড লোড করার চেয়ে যত দ্রুত সম্ভব স্ক্রিপ্ট লোড করা বেশি গুরুত্বপূর্ণ।

সমস্যাটি

GPT একটি বুটস্ট্র্যাপিং স্ক্রিপ্ট, gpt.js , হিসেবে ডেপ্লয় করা হয়, যেটিকে ১৫ মিনিটের একটি স্বল্প টাইম টু লিভ (TTL) দেওয়া হয়। এই স্বল্প TTL স্ক্রিপ্টটিকে দ্রুত আপডেট বা রোলব্যাক করার সুযোগ দেয়। একবার লোড হয়ে গেলে, gpt.js অতিরিক্ত ইমপ্লিমেন্টেশন স্ক্রিপ্টগুলোর জন্য অনুরোধ করে এবং সেগুলো লোড করে, যেগুলোর TTL তুলনামূলকভাবে বেশি।

একবার ১৫ মিনিটের TTL (টাইম টু লিভ) শেষ হয়ে গেলে, ক্যাশে থাকা gpt.js এর সংস্করণটি পুরোনো হয়ে যায় এবং এটিকে পুনরায় যাচাই করার প্রয়োজন হয়। পূর্বে, এই পুনঃযাচাই প্রক্রিয়ায় স্ক্রিপ্টটির একটি নতুন কপি আনার জন্য একটি সিনক্রোনাস নেটওয়ার্ক রিকোয়েস্ট করা হতো, যা প্রথম বিজ্ঞাপন রিকোয়েস্টটিতে ল্যাটেন্সি যোগ করত।

সমাধান

stale-while-revalidate অ্যাট্রিবিউটটি Cache-Control হেডার দ্বারা ব্যবহৃত হয় এবং এটি একটি অতিরিক্ত সময়সীমা নির্ধারণ করে, যে সময়ে একটি ক্যাশে কোনো পুরনো অ্যাসেট ব্যবহার করতে পারে, যতক্ষণ না অ্যাসেটটি অ্যাসিঙ্ক্রোনাসভাবে পুনরায় যাচাই করা হয়। এটি ডেভেলপারদের তাৎক্ষণিকতা— অর্থাৎ ক্যাশে করা কন্টেন্ট সাথে সাথে লোড করা —এবং সতেজতা —অর্থাৎ ভবিষ্যতে ক্যাশে করা কন্টেন্টের আপডেটগুলো ব্যবহার নিশ্চিত করা —এই দুইয়ের মধ্যে ভারসাম্য বজায় রাখতে সাহায্য করে।

গুগল ডিসপ্লে বিজ্ঞাপন কেস স্টাডি

ব্রাউজারগুলো stale-while-revalidate বাস্তবায়ন করার প্রত্যাশায়, GPT টিম ২০১৬ সালে gpt.js HTTP রেসপন্সে এই Cache-Control হেডারটি যুক্ত করেছিল:

cache-control: private, max-age=900, stale-while-revalidate=3600

এই সেটিংটির অর্থ হলো, পূর্ববর্তী ক্যাশ করা মানের ১৫ থেকে ৬০ মিনিটের মধ্যে যদি gpt.js জন্য অনুরোধ করা হয়, তাহলে সেই ক্যাশ করা মানটি পুরোনো হয়ে গেলেও অনুরোধটি পূরণ করার জন্য সেটিই ব্যবহার করা হবে। একই সাথে, ভবিষ্যতে ব্যবহারের জন্য ক্যাশে একটি নতুন মান দিয়ে পূর্ণ করতে ব্যাকগ্রাউন্ডে একটি পুনঃযাচাইয়ের অনুরোধ করা হবে।

ক্রোম তার ৭৫তম সংস্করণে stale-while-revalidate সমস্ত ট্রাফিকের ৯৯%-এর জন্য চালু করেছে এবং এর প্রভাব পরিমাপ করার জন্য ১% ট্রাফিকের ক্ষেত্রে ফিচারটি সাময়িকভাবে নিষ্ক্রিয় রেখেছে। অ্যাড স্ক্রিপ্টের জন্য stale-while-revalidate । ৫.২ বিলিয়ন গুগল ডিসপ্লে অ্যাড ইম্প্রেশনের একটি নমুনা থেকে ২ সপ্তাহ ধরে সংগৃহীত মেট্রিক্স পর্যবেক্ষণে নিয়ন্ত্রক দলটি নিম্নলিখিত বিষয়গুলো লক্ষ্য করেছে:

  • বিজ্ঞাপন ইম্প্রেশনে ০.৩% বৃদ্ধি।
  • রাজস্বে ০.৫% বৃদ্ধি।
  • পেজ লোড হওয়ার ৫০০ মিলিসেকেন্ডের মধ্যে বিজ্ঞাপনের স্ক্রিপ্ট লোড হওয়ার সময় ২% বৃদ্ধি পেয়েছে।
  • সার্বিকভাবে সফল বিজ্ঞাপন স্ক্রিপ্ট লোডের সংখ্যা ১.১% বৃদ্ধি পেয়েছে।
পৃষ্ঠা লোড শুরু থেকে বিজ্ঞাপন স্ক্রিপ্ট লোড হওয়ার সময় (মিলিসেকেন্ডে) বনাম বিজ্ঞাপন স্ক্রিপ্ট লোডের সংখ্যার শতাংশ পয়েন্ট পরিবর্তন
উৎস: গুগলের অভ্যন্তরীণ তথ্য, জুন থেকে জুলাই ২০১৯।

চার্টে যেমন দেখানো হয়েছে, এই পরীক্ষার ফলাফলের কারণ হলো সফলভাবে অ্যাড স্ক্রিপ্ট লোড হওয়ার সংখ্যা বৃদ্ধি, যার অধিকাংশই পেজ লোড হওয়ার প্রক্রিয়ার একেবারে শুরুতে ঘটেছিল।

আপনার সাইটে stale-while-revalidate প্রয়োগ করুন।

GPT টিম দেখেছে যে stale-while-revalidate ব্যবহার করে HTTP হেডারে তুলনামূলকভাবে একটি ছোট পরিবর্তন আনলে তা গতি বাড়াতে এবং ব্যবসায়িক মেট্রিক্স উন্নত করতে পারে। আপনার নিজের সাইটে stale-while-revalidate প্রয়োগ করার বিষয়ে আরও জানতে “Keeping things fresh with stale-while stale-while-revalidate revalidate” দেখুন।