تاریخ انتشار: 20 ژانویه 2025
از Chrome 133 (فوریه 2025)، وقتی حالت صرفه جویی انرژی فعال باشد، برگههای پسزمینه مبتنی بر CPU واجد شرایط ثابت میشوند. هدف از این کار کاهش مصرف باتری برای کاربرانی است که به صرفه جویی در انرژی متکی هستند و هر درصد از عمر باتری برای آنها مهم است. برای به حداقل رساندن اختلال، تنها برگههای پسزمینهای که معیارهای خاصی را برآورده میکنند و مصرف بالای CPU را نشان میدهند، ثابت میشوند.
انجماد چیست؟
فریز کردن، اجرای کار در یک صفحه وب را به حالت تعلیق در می آورد. این شامل:
- کنترل کننده رویداد (به عنوان مثال، ورودی، شبکه و حسگر)
- تایمرها
- حل کننده های وعده
فریز کردن با دور انداختن متفاوت است، جایی که یک برگه از حافظه خالی میشود. وقتی یک برگه ثابت دوباره به فوکوس باز میگردد، بهطور خودکار از حالت ثابت خارج میشود و هر کار در صف بدون از دست دادن حالت اجرا میشود.
هنگامی که یک صفحه ثابت یا از سر گرفته می شود، رویدادهای ثابت و رزومه ارسال می شوند (به مستندات API چرخه زندگی صفحه مراجعه کنید). این رویدادها به صفحه اجازه میدهد منابع استفادهنشده را آزاد کند، به سرور اطلاع دهد که صفحه متوقف شده است، یا معیارها را ثبت کند.
چه صفحاتی را می توان فریز کرد؟
فریز کردن در گروههای زمینه مرور اعمال میشود. به طور معمول، یک گروه زمینه مرور از یک برگه واحد تشکیل شده است. با این حال، هنگام استفاده از APIهایی مانند window.open()
چندین تب می توانند به یک گروه تعلق داشته باشند.
با فعال بودن «بهینهسازی انرژی»، یک گروه زمینه مرور در صورت داشتن شرایط زیر مسدود میشود:
- تمام صفحات درون گروه برای بیش از پنج دقیقه مخفی و ساکت هستند.
- هر زیرگروهی از فریمهای با منشأ یکسان در داخل گروه «محور CPU» است.
- گروه انجام نمی دهد:
- عملکرد کنفرانس صوتی یا تصویری را ارائه دهید (با استفاده از میکروفون، دوربین، ضبط صفحه/پنجره/برگه، یا یک RTCPeerConnection با یک کانال RTCData "باز" یا یک MediaStreamTrack "زنده" شناسایی می شود.
- یک دستگاه خارجی را کنترل کنید (با استفاده از Web USB، Web Bluetooth، Web HID یا Web Serial شناسایی شده است).
- یک Web Lock یا یک اتصال IndexedDB را نگه دارید که عملیات خارج از گروه را مسدود می کند.
ممکن است تعریف «CPU-intensive» تغییر کند، اما هدف این است که ایمیلها یا کلاینتهای چت بهطور مؤثر پیادهسازی شده یا برنامههای تقویمی که اعلانها را تولید میکنند، حذف شوند.
ثابت کردن همزمان همه برگهها در یک گروه زمینه مرور، اختلال را برای برنامههایی که از پنجرههای بازشو استفاده میکنند، مانند آنهایی که برای نوشتن پیام یا وارد کردن اعتبارنامه استفاده میکنند، به حداقل میرساند.
چگونه می توانم سایت خود را آماده کنم؟
اگر سایت شما عملکرد پسزمینه (مثلاً اعلانها، آپلود فایل یا بهروزرسانی محتوا) نداشته باشد، احتمالاً تحت تأثیر ثابت شدن قرار نخواهد گرفت.
اگر سایت شما دارای عملکرد پسزمینه است، استفاده از CPU آن را در پسزمینه به حداقل برسانید تا از در نظر گرفتن CPU فشرده و در نتیجه منجمد شدن جلوگیری کنید. در اینجا چند نکته وجود دارد:
- از تایمر برای بررسی تغییر وضعیت دوره ای خودداری کنید.
- از IntersectionObserver برای تشخیص اینکه چه زمانی یک عنصر وارد viewport می شود استفاده کنید.
- برای تشخیص تغییرات اندازه عنصر از ResizeObserver استفاده کنید.
- برای تغییرات DOM از MutationObserver یا بازخوانی چرخه عمر عنصر سفارشی استفاده کنید.
- سوکت های وب ، رویدادهای ارسال شده توسط سرور ، پیام های فشاری ، یا واکشی جریان ها را به جای سرور نظرسنجی در نظر بگیرید.
- برای تغییرات صوتی یا تصویری از رویدادهایی مانند بهروزرسانی زمانی و پایانیافته استفاده کنید .
همچنین توصیه میکنیم عملکرد پسزمینه را به یک سرویسکار منتقل کنید تا تحت تأثیر انجماد قرار نگیرد. یک سرویسکار علاوه بر اینکه تحت تأثیر انجماد قرار نمیگیرد، به منابع مرورگر کمتری نیاز دارد. استفاده را در نظر بگیرید:
- برای اطلاعیه ها، API را فشار دهید
- Background Synchronization API یا Web Periodic Background Synchronization API برای واکشی به روز رسانی.
سایتها میتوانند با شرکت در آزمایش اولیه BackgroundPageFreezeOptOut از انجماد خودداری کنند. این آزمایشی پس از انتشار APIهای جدید برای اعلام کارهای پس زمینه مهم (مثلاً API اعلان پیشرفت ) متوقف خواهد شد.
میتوانید در chrome://discards
واجد شرایط بودن یک برگه را برای ثابت کردن بررسی کنید. توجه داشته باشید که حتی اگر برگهای واجد شرایط ثابت کردن باشد، Chrome 133 آن را تنها در صورتی ثابت میکند که CPU فشرده باشد و «بهینهسازی انرژی» فعال باشد.
بعدش چی؟
انجماد برگه پسزمینه باعث صرفهجویی در مصرف انرژی میشود، که برای کاربرانی که بهینهسازی انرژی را فعال کردهاند، بسیار مهم است.
همچنین عملکرد برگه پیشزمینه را بهبود میبخشد و با کاهش استفاده از CPU و دسترسی به حافظه، به جلوگیری از پایان برگه پسزمینه، بهویژه در دستگاههای دارای محدودیت منابع کمک میکند. بنابراین Chrome انجماد برگهها را در موقعیتهای بیشتری گسترش میدهد (تغییرات در blink-dev@chromium.org اعلام میشود). برای انجام این کار با کمترین اختلال در موارد استفاده از پسزمینه، APIهای جدید مانند API اعلان پیشرفت به صفحات اجازه میدهند کارهای پسزمینه مهم را اعلام کنند و از انجماد جلوگیری کنند.