Thông tin khái quát
Bộ nhớ đệm cho thao tác tiến/lùi (bfcache) lưu trữ bản tổng quan nhanh của trang trong bộ nhớ cho thời điểm trang được khôi phục từ nhật ký điều hướng. Điều này giúp đẩy nhanh đáng kể các thao tác điều hướng trả về trang, tuy nhiên một số API trình duyệt (ví dụ: trình nghe huỷ tải) có thể khiến bộ nhớ đệm bfcache bị lỗi và trang sẽ được tải bình thường.
Cách Lighthouse phát hiện lỗi bfcache
Thành phần điều hướng độc lập
Khi kết thúc một quá trình điều hướng độc lập, Lighthouse sẽ rời khỏi và tìm cách khôi phục trang từ nhật ký điều hướng để phát hiện xem bfcache có đang được sử dụng hay không.
Luồng người dùng
Lighthouse sẽ không chủ động kiểm tra bfcache trong phần điều hướng khi chạy luồng người dùng. Lý do là việc rời khỏi và quay lại trang ở cuối mỗi thao tác điều hướng không phản ánh hầu hết trải nghiệm người dùng trên trang.
Tuy nhiên, bạn vẫn có thể kiểm thử mức sử dụng bfcache ở chế độ khoảng thời gian bằng cách đưa tính năng điều hướng theo nhật ký vào hành trình của người dùng. Ví dụ:
const flow = await startFlow(page);
// This navigation will not test the bfcache
// because it is part of a user flow.
await flow.navigate('https://example.com');
// This timespan will try to restore the page from the bfcache.
// Problems restoring from the bfcache are surfaced in this report.
await flow.startTimespan();
await page.goto('https://example2.com');
await page.goBack();
await flow.endTimespan();
Tìm hiểu về các lỗi bfcache
Nếu không thể khôi phục trang từ bfcache vì bất kỳ lý do gì, kiểm tra sẽ không thành công. Lighthouse sẽ liệt kê mọi lý do khiến không thể sử dụng bfcache, cùng với(các) khung gây ra sự cố. Lý do xảy ra lỗi có thể là một trong ba loại sau:
- Có thể hành động: Bạn có thể khắc phục những vấn đề này để bật tính năng lưu vào bộ nhớ đệm.
- Hỗ trợ đang chờ xử lý: Chrome chưa hỗ trợ các tính năng này nên sẽ ngăn việc lưu vào bộ nhớ đệm. Tuy nhiên, khi được hỗ trợ, Chrome sẽ loại bỏ những hạn chế này.
- Không thể khắc phục: Bạn không thể khắc phục những vấn đề này trên trang này. Nội dung nào đó nằm ngoài tầm kiểm soát của trang ngăn cản việc lưu vào bộ nhớ đệm.