Loại bỏ thẻ trong Chrome – Thử nghiệm tiết kiệm bộ nhớ

Addy Osmani
Addy Osmani

Giảm mức sử dụng bộ nhớ của Chrome là một trong những ưu tiên hàng đầu của nhóm năm nay. Chúng tôi nhận thấy mức sử dụng bộ nhớ của Gmail đã giảm tới 45% nhờ những cải tiến trong quá trình thu gom rác của V8, nhưng chúng tôi mới chỉ bắt đầu. Một trong những thử nghiệm tiếp theo của chúng tôi về việc sử dụng bộ nhớ nhắm đến những người tích trữ thẻ (như tôi). Thao tác này được gọi là Loại bỏ thẻ.

Không phải tất cả các thẻ đang mở đều là thẻ được sử dụng. Nếu bộ nhớ sắp hết, Chrome có thể loại bỏ các thẻ nền không thú vị.

Bạn có thể sử dụng tính năng loại bỏ thẻ dưới dạng một thử nghiệm trong Chrome 46 trở lên.

Thông tin khái quát

Đối với mỗi thẻ bạn mở, quy trình kết xuất của chúng tôi thường mất khoảng 50 MB trên mỗi thẻ, mặc dù hầu hết mọi người chỉ sử dụng một thẻ tại một thời điểm. Nếu bạn có 10 thẻ đang mở, thì có ít nhất 450 MB bộ nhớ sẽ được dùng chỉ để duy trì trạng thái thẻ trong nền. Điều này có thể đôi chút khó sử dụng theo thời gian.

Cần có bộ nhớ trên mỗi thẻ

Một trong những mục tiêu của chúng tôi là giảm mức bộ nhớ sử dụng trên các thẻ mà bạn không thực sự sử dụng. Nếu xem xét các thẻ đang sử dụng bộ nhớ hệ thống trong Trình quản lý tác vụ Chrome, tôi thực sự chỉ đang "sử dụng" một hoặc hai trang web bên dưới trong khi các thẻ khác trong nền thì không được sử dụng.

Trình quản lý tác vụ cần có bộ nhớ

Đó là lúc việc loại bỏ thẻ có thể giúp chúng ta giảm mức sử dụng bộ nhớ.

Đang loại bỏ các thẻ không sử dụng

Việc loại bỏ thẻ cho phép Chrome tự động loại bỏ các thẻ không quan tâm đến bạn khi phát hiện thấy bộ nhớ hệ thống sắp hết. Việc loại bỏ có nghĩa là gì? Chà, thẻ bị loại bỏ sẽ không biến mất. Chúng tôi sẽ loại bỏ nhưng sự kiện này vẫn xuất hiện trên dải thẻ của Chrome. Nếu bạn quay lại một thẻ đã bị loại bỏ, thẻ đó sẽ tải lại khi được nhấp. Nội dung biểu mẫu, vị trí cuộn, v.v. sẽ được lưu và khôi phục giống như khi di chuyển trong thẻ tiến/lùi.

Chúng tôi cũng có một tính năng mới khác cho phép lưu cục bộ tất cả tài nguyên thẻ vào bộ nhớ đệm, tính năng này hoạt động hiệu quả với tính năng loại bỏ thẻ khi bạn không kết nối mạng. Khi thẻ được kích hoạt lại, bạn có thể tải lại phiên bản đã lưu vào bộ nhớ đệm đã được tải trước đó qua mạng. Để bật tính năng tải lại trang từ bộ nhớ đệm, bạn có thể thử một thử nghiệm khác trong chrome://flags/#show-saved-copy.

Bạn có thể thử loại bỏ thẻ ngay hôm nay bằng cách bật tính năng này qua chrome://flags/#enable-tab-discarding và chạy lại Chrome. Bạn có thể kiểm soát việc bật hay tắt tính năng này thông qua cùng một trang chrome://flags của Chrome.

Bật chế độ huỷ ảnh chụp màn hình thẻ.
Chạy lại ảnh chụp màn hình nút.

Trang mới có tên là chrome://discards cho phép bạn liệt kê các thẻ hiện đang mở và chúng tôi cố gắng chia sẻ một số thông tin chi tiết về mức độ thú vị (theo ý kiến của chúng tôi) đối với bạn, từ nhiều nhất đến ít nhất.

Ảnh chụp màn hình trang Thẻ bị huỷ.

Để kiểm thử tính năng này, bạn có thể thực hiện hành vi duyệt web thông thường cho đến khi hệ thống ở chế độ bộ nhớ thấp hoặc kích hoạt một thẻ loại bỏ từ about:discards bằng cách nhấp vào "Huỷ thẻ ngay". Thao tác này sẽ loại bỏ thẻ cuối cùng trong danh sách. Bạn cũng có thể loại bỏ một thẻ cụ thể khỏi danh sách bằng cách nhấp vào nút "Huỷ" tương ứng. Thẻ bị loại bỏ sẽ hiển thị với tiền tố [Đã loại bỏ].

Ảnh chụp màn hình ví dụ về thẻ bị huỷ.

Thẻ sẽ loại bỏ các thẻ theo thứ tự sau:

  • Các trang nội bộ như trang thẻ mới, dấu trang, v.v.
  • Các thẻ đã chọn từ lâu
  • Các thẻ được chọn gần đây
  • Ứng dụng chạy trong cửa sổ
  • Thẻ được ghim
  • Thẻ đã chọn

Chúng tôi đã bật tính năng thử nghiệm loại bỏ thẻ trong Chrome Canary dành cho Windows và Mac OS, và sẽ sớm triển khai Linux.

Các thẻ được ghim cũng được tính đến khi xem xét liệu có huỷ thẻ

Cảm hứng: này, người treo tuyệt vời

Nếu việc loại bỏ thẻ nghe có vẻ quen thuộc, thì đó là do bạn có thể đã gặp các tiện ích hữu ích của Chrome cung cấp cho bạn phiên bản đơn giản hơn một chút của ý tưởng này, chẳng hạn như The Great Suspender. Great Suspender hướng đến việc giảm mức sử dụng bộ nhớ và GPU của Chrome bằng cách tạm ngưng các thẻ sau một khoảng thời gian không hoạt động tuỳ chỉnh.

Ảnh chụp màn hình dây đeo.

Tương tự như việc loại bỏ thẻ, bạn có thể huỷ tạm ngưng các thẻ khi cần tương tác lại với các thẻ đó. Great Suspender duy trì tiêu đề và biểu tượng trang web của từng thẻ, hiển thị các thẻ bị treo ở trạng thái làm mờ, giúp bạn dễ dàng chuyển về các thẻ đó bất cứ lúc nào.

Ảnh chụp màn hình biểu tượng trang web thẻ bị tạm ngưng.

Các thẻ trong nền mà tôi không sử dụng đã bị tạm ngưng, giúp tiết kiệm bộ nhớ. Tuy nhiên, các thẻ tôi vẫn đang sử dụng (GitHub và YouTube) vẫn đang chạy như bình thường.

Chúng tôi đã trò chuyện tuyệt vời với tác giả của tiện ích Great Suspender trong khi phát triển việc loại bỏ thẻ và họ rất vui mừng khi thấy chúng tôi đã giải quyết vấn đề này theo cách hiệu quả hơn so với tiện ích, chẳng hạn như làm mất trạng thái tương tác của người dùng.

Cải tiến trong tương lai: trình chuyển đổi tuần tự thẻ

Trình chuyển đổi tuần tự thẻ là một dự án trong tương lai mà chúng tôi cho rằng có thể mang đến những cải tiến đáng kể trong phương pháp hiện tại của chúng tôi đối với việc loại bỏ thẻ. Phương thức này lấy nội dung của thẻ Chrome và chuyển đổi tuần tự trạng thái *hiện tại* thành một blob nhị phân. Sau đó, blob nhị phân này có thể được giải trình tự thành một thẻ.

Trình chuyển đổi tuần tự sẽ chuyển đổi tuần tự hầu hết mọi thứ mà Chrome, Blink và V8 cần để duy trì đúng cách một thẻ (điều gì đó mà các tiện ích của Chrome giải quyết được vấn đề này trước đây chưa thể dễ dàng đạt được). Quá trình chuyển đổi tuần tự sẽ bao gồm các yếu tố đáng ngờ thông thường: DOM (bao gồm nhiều WebGL và Canvas), CSS và trạng thái của máy ảo JavaScript V8.

Ảnh chụp màn hình khái niệm trình chuyển đổi tuần tự

Nếu sử dụng Android hoặc ChromeOS, bạn có thể biết rằng (tương tự như thẻ loại bỏ thử nghiệm được đề cập trong bài đăng này), chúng tôi sẽ loại bỏ các thẻ nền một cách mạnh mẽ để đảm bảo mức sử dụng bộ nhớ thấp. Vấn đề trong cách chúng tôi xử lý vấn đề này là thẻ của bạn sẽ mất *tất cả* trạng thái.

Khi bạn thể hiện sự quan tâm đến thẻ một lần nữa, chúng tôi sẽ phải tải lại thẻ và mọi tương tác của bạn với thẻ sẽ bị mất. Trình chuyển đổi tuần tự thẻ tiếp cận vấn đề này theo cách đưa bạn quay lại gần như chính xác những gì bạn cần mà không cần phải quay lại mạng. Chúng tôi hy vọng có thể chia sẻ thêm thông tin về công việc này trong tương lai.

Hãy thử loại bỏ thẻ và cho chúng tôi biết suy nghĩ của bạn

Chúng tôi muốn biết liệu tính năng này có hữu ích cho bạn hay không và cách cải thiện. Hãy dùng thử, thử nghiệm (đặc biệt nếu bạn là người tích trữ thẻ!) và cho chúng tôi biết suy nghĩ của bạn trong phần nhận xét. :) Chúng tôi cũng rất mong bạn gửi phiếu yêu cầu hỗ trợ về bất kỳ lỗi nào bạn gặp phải trên crbug.com.