Cải thiện tính năng phát hiện hỗ trợ ngoại tuyến của Ứng dụng web tiến bộ

Penny McLachlan
Penny McLachlan

Ứng dụng web tiến bộ (PWA) là một mẫu để xây dựng các ứng dụng hiện đại, có thể cài đặt bằng công nghệ web cho thiết bị di động và máy tính.

Một trong những tiêu chí để xây dựng trải nghiệm web hiện đại (và không phải ngẫu nhiên là PWA) là ứng dụng phải tiếp tục hoạt động ngay cả khi thiết bị không có mạng. Điều đó có nghĩa là sẽ không có màn hình Chrome Dino nếu người dùng mất quyền truy cập mạng trên thiết bị của họ!

Mục tiêu của tất cả các tiêu chí về PWA là giúp đảm bảo người dùng có trải nghiệm chất lượng cao, cạnh tranh với ứng dụng khi duyệt web. Chrome kiểm tra theo các tiêu chí của PWA trước khi bật khả năng cài đặt cho một PWA.

Chỉ những ứng dụng đáp ứng tất cả tiêu chí cốt lõi về khả năng cài đặt Ứng dụng web tiến bộ, bao gồm cả việc hỗ trợ chế độ ngoại tuyến, mới có thể được cài đặt vào thiết bị từ Chrome.

Logic phát hiện khi không có mạng trước đây

Việc xác minh khả năng hỗ trợ ngoại tuyến đã là một phần trong tiêu chí về khả năng cài đặt PWA trong nhiều năm. Cho đến gần đây, Chrome không có khả năng mô phỏng các yêu cầu thông qua trình chạy dịch vụ, vì vậy, không thể kiểm tra đầy đủ hành vi chính xác khi không có mạng.

Sơ đồ trình chạy dịch vụ

Điều đó có nghĩa là Chrome không có khả năng xác thực xem trình xử lý sự kiện fetch có trả về một tài nguyên hợp lệ với HTTP 200 trong quá trình kiểm tra khi không có mạng hay không. Chrome chỉ kiểm tra xem trình chạy dịch vụ có thực sự có trình xử lý fetch hay không.

Cập nhật logic phát hiện khi không có mạng

Chrome 89 đã bổ sung khả năng chạy các yêu cầu ngoại tuyến mô phỏng thông qua trình chạy dịch vụ, cho phép cải thiện logic phát hiện ngoại tuyến để phản ánh chính xác hơn khả năng hỗ trợ ngoại tuyến thực tế của ứng dụng.

Chúng tôi đã lên kế hoạch sử dụng khả năng mới này để đảm bảo rằng PWA cung cấp một trang hợp lệ khi không có mạng, nhưng chúng tôi đã tạm dừng các kế hoạch đó. Quy trình kiểm tra khả năng cài đặt sẽ tiếp tục diễn ra nếu trang có một trình chạy dịch vụ bao gồm trình xử lý sự kiện fetch.

Điều này có ý nghĩa gì đối với nhà phát triển?

Mặc dù hiện tại bạn không cần thực hiện thay đổi nào, nhưng bạn nên cung cấp trải nghiệm ngoại tuyến vì chúng tôi dự kiến sẽ sử dụng logic mới để kiểm tra xem trang có hợp lệ hay không vào một thời điểm nào đó trong tương lai.

Bạn có thể quyết định loại trải nghiệm ngoại tuyến mà bạn muốn cung cấp. Một đầu của phổ này là trải nghiệm hoàn toàn ngoại tuyến. Điều này có nghĩa là bạn cần lưu trước vào bộ nhớ đệm tất cả tài nguyên và dữ liệu cần thiết, đồng thời đồng bộ hoá dữ liệu với máy chủ khi người dùng trực tuyến trở lại. Việc lưu vào bộ nhớ đệm cũng sẽ giúp cải thiện các chỉ số quan trọng chính của trang web vì việc này giúp loại bỏ nhu cầu tải tài nguyên xuống từ mạng mỗi lần. Ở đầu kia của phổ này là trang dự phòng tuỳ chỉnh khi không có mạng.

Cảnh báo xuất hiện trong thẻ Vấn đề của công cụ cho nhà phát triển sẽ bị xoá trong Chrome 90.