Lỗi treo khi bật Trình tiết kiệm pin

François Doray
François Doray

Ngày phát hành: 20 tháng 1 năm 2025

Kể từ Chrome 133 (tháng 2 năm 2025), các thẻ nền tiêu tốn nhiều CPU đủ điều kiện sẽ bị đóng băng khi chế độ Trình tiết kiệm pin đang hoạt động. Mục đích của việc này là giảm mức tiêu thụ pin cho những người dùng dựa vào Trình tiết kiệm pin và những người dùng cần tính toán từng phần trăm thời lượng pin. Để giảm thiểu sự gián đoạn, chỉ những thẻ nền đáp ứng các tiêu chí cụ thể và có mức sử dụng CPU cao mới bị đóng băng.

Tình trạng treo là gì?

Thao tác đóng băng sẽ tạm ngưng quá trình thực thi tác vụ trên trang web. Nội dung như vậy bao gồm:

  • Trình xử lý sự kiện (ví dụ: đầu vào, mạng và cảm biến)
  • Hẹn giờ
  • Trình phân giải lời hứa

Việc đóng băng khác với việc loại bỏ, trong đó một thẻ sẽ được huỷ tải khỏi bộ nhớ. Khi một thẻ bị đóng băng được đưa trở lại tiêu điểm, thẻ đó sẽ tự động được huỷ đóng băng và mọi tác vụ trong hàng đợi sẽ được thực thi mà không làm mất trạng thái.

Sự kiện đóng băng và tiếp tục được gửi khi một trang bị đóng băng hoặc tiếp tục (xem tài liệu về API Vòng đời trang). Các sự kiện này cho phép trang giải phóng tài nguyên không sử dụng, thông báo cho máy chủ rằng trang đang tạm dừng hoặc ghi lại các chỉ số.

Những trang nào có thể bị đóng băng?

Tính năng đóng băng sẽ hoạt động trên nhóm ngữ cảnh duyệt xem. Thông thường, một nhóm ngữ cảnh duyệt web bao gồm một thẻ duy nhất. Tuy nhiên, nhiều thẻ có thể thuộc cùng một nhóm khi sử dụng các API như window.open().

Khi bạn bật tính năng Trình tiết kiệm pin, một nhóm ngữ cảnh duyệt web sẽ bị đóng băng nếu nhóm đó đáp ứng các điều kiện sau:

  • Tất cả các trang trong nhóm đã bị ẩn và tắt tiếng trong hơn 5 phút.
  • Mọi nhóm con của các khung cùng nguồn gốc trong nhóm đều "tốn nhiều CPU".
  • Nhóm không:
    • Cung cấp chức năng hội nghị âm thanh hoặc video (được phát hiện bằng micrô, máy ảnh, tính năng chụp màn hình/cửa sổ/thẻ hoặc RTCPeerConnection với RTCDataChannel "mở" hoặc MediaStreamTrack "trực tiếp").
    • Kiểm soát một thiết bị bên ngoài (được phát hiện bằng Web USB, Web Bluetooth, Web HID hoặc Web Serial).
    • Giữ Khoá web hoặc kết nối IndexedDB chặn các thao tác bên ngoài nhóm.

Định nghĩa về "CPU-intensive" (tốn nhiều CPU) có thể thay đổi, nhưng ý định là loại trừ các ứng dụng email hoặc ứng dụng trò chuyện được triển khai hiệu quả hoặc các ứng dụng lịch tạo thông báo.

Việc đồng thời đóng băng tất cả các thẻ trong cùng một nhóm ngữ cảnh duyệt web sẽ giảm thiểu sự gián đoạn cho các ứng dụng sử dụng cửa sổ bật lên, chẳng hạn như các ứng dụng để soạn tin nhắn hoặc nhập thông tin xác thực.

Làm cách nào để chuẩn bị trang web của tôi?

Nếu trang web của bạn không có chức năng ở chế độ nền (ví dụ: thông báo, tải tệp lên hoặc làm mới nội dung), thì trang web đó có thể sẽ không bị ảnh hưởng khi bị treo.

Nếu trang web của bạn có chức năng ở chế độ nền, hãy giảm thiểu mức sử dụng CPU ở chế độ nền để tránh bị coi là tốn nhiều CPU và bị treo. Sau đây là một số mẹo:

Bạn cũng nên di chuyển chức năng ở chế độ nền sang một worker dịch vụ để chức năng đó không bị ảnh hưởng khi bị treo. Ngoài việc không bị ảnh hưởng bởi tình trạng treo, trình chạy dịch vụ còn yêu cầu ít tài nguyên trình duyệt hơn. Hãy cân nhắc sử dụng:

Các trang web có thể chọn không bị đóng băng bằng cách tham gia bản dùng thử theo nguyên gốc BackgroundPageFreezeOptOut. Bản dùng thử này sẽ ngừng hoạt động sau khi các API mới để khai báo công việc quan trọng ở chế độ nền được phát hành (ví dụ: Progress Notification API).

Bạn có thể kiểm tra điều kiện để đóng băng một thẻ tại chrome://discards. Xin lưu ý rằng ngay cả khi một thẻ đủ điều kiện để bị đóng băng, Chrome 133 sẽ chỉ đóng băng thẻ đó nếu thẻ đó tiêu tốn nhiều CPU và Trình tiết kiệm pin đang hoạt động.

Tiếp theo là gì?

Tính năng đóng băng thẻ chạy trong nền giúp tiết kiệm pin, điều này rất quan trọng đối với những người dùng bật tính năng Trình tiết kiệm pin.

Phương thức này cũng cải thiện hiệu suất của thẻ trên nền trước và giúp tránh việc chấm dứt thẻ trên nền sau, đặc biệt là trên các thiết bị bị hạn chế tài nguyên, bằng cách giảm mức sử dụng CPU và quyền truy cập bộ nhớ. Do đó, Chrome sẽ mở rộng tính năng đóng băng thẻ cho nhiều trường hợp hơn (các thay đổi sẽ được công bố trên blink-dev@chromium.org). Để thực hiện việc này với mức độ gián đoạn tối thiểu đối với các trường hợp sử dụng trong nền, các API mới như Progress Notification API sẽ cho phép các trang khai báo công việc quan trọng trong nền và ngăn tình trạng treo.