টেস্ট এক
আমি এই উদ্দেশ্যে বিশেষত একটি পরীক্ষা লিখেছি:
ফ্রেম রেট বিতরণ: সেটইন্টারভাল বনাম অনুরোধঅ্যানিমেশনফ্রেম
দ্রষ্টব্য: এই পরীক্ষাটি বেশ সিপিইউ নিবিড়। requestAnimationFrameআইই 9- এবং অপেরা 12- দ্বারা সমর্থিত নয়।
পরীক্ষা প্রকৃত সময় এটি একটি লাগে লগ setIntervalএবং requestAnimationFrameবিভিন্ন ব্রাউজারে চালানোর জন্য, এবং আপনি একটি বন্টন আকারে ফলাফল দেয়। setIntervalএটি বিভিন্ন সেটিংসে কীভাবে চলে তা দেখতে আপনি মিলিসেকেন্ডের সংখ্যাটি পরিবর্তন করতে পারেন। বিলম্বের ক্ষেত্রে setTimeoutএকইভাবে কাজ করে setInterval। requestAnimationFrameসাধারণত ব্রাউজারের উপর নির্ভর করে 60fps এ ডিফল্ট হয়। আপনি যখন অন্য কোনও ট্যাবে স্যুইচ করেন বা একটি নিষ্ক্রিয় উইন্ডো থাকে তখন কী ঘটে তা দেখার জন্য কেবল পৃষ্ঠাটি খুলুন, একটি ভিন্ন ট্যাবে স্যুইচ করুন এবং কিছুক্ষণ অপেক্ষা করুন। এটি একটি নিষ্ক্রিয় ট্যাবে এই ফাংশনগুলির জন্য লাগছে প্রকৃত সময়টি লগ করা অবিরত থাকবে।
পরীক্ষা দুটি
আরেকটি উপায় এটি পরীক্ষা করার জন্য বারবার টাইমস্ট্যাম্প লগ ইন করার নেই setIntervalএবং requestAnimationFrameএবং একটি বিচ্ছিন্ন কনসোলে মনে করছেন। আপনি যখন ট্যাব বা উইন্ডোটিকে নিষ্ক্রিয় করে তুলছেন তখন এটি প্রায়শই আপডেট হয় (বা এটি যদি কখনও আপডেট হয়) can
ফলাফল
যখন ট্যাবটি নিষ্ক্রিয় থাকে তখন Chrome
ক্রোম সর্বনিম্ন অন্তর setInterval1000 মিমি সীমাবদ্ধ করে । ব্যবধানটি যদি 1000 মিমি থেকে বেশি হয় তবে এটি নির্দিষ্ট বিরতিতে চলবে। উইন্ডোটি ফোকাসের বাইরে থাকলে কিছু যায় আসে না, আপনি যখন অন্য কোনও ট্যাবে স্যুইচ করেন কেবল তখন বিরতি সীমিত থাকে। requestAnimationFrameট্যাব নিষ্ক্রিয় থাকে যখন থামানো হয়।
// Provides control over the minimum timer interval for background tabs.
const double kBackgroundTabTimerInterval = 1.0;
https://codereview.chromium.org/6546021/patch/1001/2001
ফায়ারফক্স
ক্রোমের অনুরূপ, setIntervalযখন ট্যাবটি (উইন্ডো নয়) নিষ্ক্রিয় থাকে তখন ফায়ারফক্স নূন্যতম ব্যবধানকে প্রায় 1000 মিমি পর্যন্ত সীমাবদ্ধ করে । যাইহোক, requestAnimationFrameট্যাবটি নিষ্ক্রিয় থাকাকালীন দ্রুত ধীরে ধীরে চলতে থাকে, প্রতিটি ফ্রেম 1s, 2s, 4s, 8s ইত্যাদি নিয়ে থাকে।
// The default shortest interval/timeout we permit
#define DEFAULT_MIN_TIMEOUT_VALUE 4 // 4ms
#define DEFAULT_MIN_BACKGROUND_TIMEOUT_VALUE 1000 // 1000ms
https://hg.mozilla.org/releases/mozilla-release/file/0bf1cadfb004/dom/base/nsGlobalWindow.cpp#l296
ইন্টারনেট এক্সপ্লোরার
আইই setIntervalট্যাবটি নিষ্ক্রিয় থাকলে বিলম্ব সীমাবদ্ধ করে না , তবে এটি requestAnimationFrameনিষ্ক্রিয় ট্যাবগুলিতে বিরতি দেয় । উইন্ডোটি ফোকাসের বাইরে আছে কিনা তা বিবেচ্য নয়।
এজ
14 প্রান্ত থেকে শুরু করে, setIntervalনিষ্ক্রিয় ট্যাবগুলিতে 1000 মিমি সংযুক্ত থাকে। requestAnimationFrameনিষ্ক্রিয় ট্যাবগুলিতে সর্বদা বিরতি দেওয়া হয়।
সাফারি
ক্রোমের মতো, setIntervalট্যাবটি নিষ্ক্রিয় থাকলে 1000 মিমি থেকে সাফারি ক্যাপ দেয় । requestAnimationFrameপাশাপাশি বিরতি দেওয়া হয়।
অপেরা
ওয়েবকিট ইঞ্জিনটি গ্রহণের পর থেকে অপেরা ক্রোমের মতো একই আচরণ প্রদর্শন করে। ট্যাবটি নিষ্ক্রিয় থাকাকালীন setInterval1000 মিমিগুলিতে ক্যাপড থাকে এবং requestAnimationFrameবিরতি দেওয়া হয়।
সারসংক্ষেপ
নিষ্ক্রিয় ট্যাবগুলির জন্য অন্তর পুনরাবৃত্তি:
setInterval requestAnimationFrame
ক্রোম
9- প্রভাবিত নয় সমর্থিত নয়
10 প্রভাবিত হয়নি
11+> = 1000ms বিরাম দেওয়া হয়েছে
ফায়ারফক্স
3- প্রভাবিত নয় সমর্থিত নয়
4 প্রভাবিত 1s
5+> = 1000ms 2 n s (নিষ্ক্রিয়তার পর থেকে ফ্রেমের সংখ্যা)
আই ই
9- প্রভাবিত নয় সমর্থিত নয়
10+ প্রভাবিত হয়নি বিরতিতে
প্রান্ত
13- প্রভাবিত বিরতি নেই
14+> = 1000ms বিরাম দেওয়া হয়েছে
আফ্রিকায় শিকার অভিযান
5- প্রভাবিত নয় সমর্থিত
6 প্রভাবিত বিরতি নেই
7+> = 1000ms বিরাম দেওয়া হয়েছে
অপেরা
12- প্রভাবিত নয় সমর্থিত নয়
15+> = 1000ms বিরাম দেওয়া হয়েছে