Cách tốt hơn để cập nhật ứng dụng web

Dan Murphy
Dan Murphy
Dibyajyoti Pal
Dibyajyoti Pal

Ngày xuất bản: 21 tháng 1 năm 2026

Kể từ Chrome 144, quy trình cập nhật cho các ứng dụng web có thể cài đặt có một tệp kê khai ứng dụng web đã được tinh giản, giúp quy trình này trở nên xác định, dự đoán và hiệu quả hơn. Bài đăng này giải thích phương pháp hiện tại và những thay đổi mà chúng tôi đã thực hiện để cải thiện phương pháp đó.

Phương pháp trước đây (trước Chrome 144)

Trước Chrome 144, các ứng dụng web thiếu một sự kiện cụ thể để chủ động kích hoạt các bản cập nhật. Thay vào đó, các bản cập nhật có thể xảy ra khi nhà phát triển sửa đổi tệp kê khai ứng dụng hoặc các biểu tượng liên kết của ứng dụng. Quá trình cập nhật bắt đầu khi một tác nhân người dùng truy xuất một manifest bằng cách sử dụng một manifest link. Quá trình này thường xảy ra khi người dùng truy cập vào một trang web hoặc khởi chạy một ứng dụng (có manifest đó được liên kết). Để xác định xem có cần cập nhật hay không, hệ thống sẽ so sánh tệp kê khai và biểu tượng hiện tại với trạng thái đã ghi trước đó. Quy trình này tốn nhiều tài nguyên vì luôn yêu cầu tải biểu tượng xuống từ mạng để thực hiện so sánh bitmap.

Để giảm tải cho máy chủ khi tải biểu tượng xuống, Chrome đã triển khai một cơ chế điều tiết để giới hạn các lượt kiểm tra này ở mức một lần mỗi ngày cho mỗi ứng dụng, nhưng tổng mức tiêu thụ băng thông vẫn ở mức cao. Ngoài ra, việc hạn chế kiểm tra mỗi ngày một lần sẽ gây ra sự không nhất quán trong quá trình phát triển và kiểm thử, đồng thời cản trở nhà phát triển cung cấp các giải pháp đáng tin cậy cho người dùng chưa nhận được bản cập nhật.

Với phương pháp này, các nhà phát triển phải đối mặt với nhiều vấn đề phức tạp khi triển khai các thay đổi nhạy cảm về bảo mật, chẳng hạn như nội dung cập nhật cho tên hoặc biểu tượng của ứng dụng, thường được gọi là thay đổi về Danh tính ứng dụng. Vì Ứng dụng web không có cơ quan trung ương như Google Play để xem xét các bản cập nhật, nên bạn phải trình bày rõ ràng những nội dung sửa đổi này cho người dùng để họ xác nhận. Tuy nhiên, việc xác định thời điểm thích hợp nhất để nhắc người dùng về những thay đổi này vẫn là một thách thức.

Các lần lặp lại trước đây của hộp thoại cập nhật cũng thường gây nhầm lẫn khi tuyên bố rằng các biểu tượng đã thay đổi trong khi chúng trông giống hệt nhau đối với người dùng. Vấn đề này bắt nguồn từ việc dựa vào các so sánh trực tiếp về pixel, thường đánh dấu những khác biệt không đáng kể. Mặc dù một số biến thể là do nhà phát triển cố ý điều chỉnh, nhưng nhiều biến thể là do CDN mã hoá lại hình ảnh một cách linh hoạt. Việc hộp thoại xác nhận thường xuyên xuất hiện quá mức này cuối cùng đã dẫn đến việc vô hiệu hoá các bản cập nhật biểu tượng trong Chrome 91.

Để giải quyết vấn đề này trên Chrome dành cho Android, ngưỡng khác biệt về hình ảnh đã được giới thiệu từ vài năm trước. Điều này đảm bảo rằng người dùng chỉ được yêu cầu xác nhận nếu các thay đổi về biểu tượng là đáng kể. Nhờ tinh chỉnh này, tính năng cập nhật biểu tượng đã được khôi phục trên Android, mặc dù tính năng này vẫn bị vô hiệu hoá đối với Chrome trên máy tính.

Một cảnh báo cho thấy thay đổi đối với biểu tượng và một thông báo cảnh báo người dùng bằng các nút để xác nhận thay đổi hoặc gỡ cài đặt ứng dụng.
Máy tính (Chrome 91 trở lên chưa được phát hành)
Cảnh báo trên thiết bị di động cho biết thay đổi đối với biểu tượng và một thông báo cảnh báo người dùng kèm theo các nút để chấp nhận thay đổi hoặc gỡ cài đặt ứng dụng.
Android (hiện tại)

Các hạn chế và mục tiêu đối với những thay đổi đối với bản cập nhật ứng dụng web

Các mục tiêu sau đây đã định hướng cho quá trình phát triển quy trình cập nhật mới:

  • Đáp ứng kỳ vọng của người dùng: Vì danh tính của ứng dụng vốn dĩ được liên kết với nguồn gốc của ứng dụng, nên tên và biểu tượng của ứng dụng không được thay đổi mà không có sự chấp thuận rõ ràng của người dùng.
  • Đảm bảo tính nhất quán về chức năng: Các ứng dụng phải luôn mới nhất có thể đối với tất cả người dùng để đảm bảo tính nhất quán về chức năng.
  • Cung cấp UX và hộp thoại có thể dự đoán: Nhà phát triển có thể dễ dàng dự đoán thời điểm người dùng sẽ gặp phải lời nhắc trên giao diện liên quan đến việc cập nhật tên hoặc biểu tượng ứng dụng.
  • Tối ưu hoá mức sử dụng mạng: Cơ chế cập nhật phải giảm thiểu lưu lượng truy cập dữ liệu không cần thiết.

Những thay đổi trong Chrome 144

Giờ đây, bạn không bắt buộc phải cập nhật tên và biểu tượng

Trước đây, người dùng phải đối mặt với một hộp thoại gây phiền toái, yêu cầu họ gỡ cài đặt ứng dụng hoặc chấp nhận ngay các thay đổi về biểu tượng và tên. Tính năng này đã được thay thế bằng một đề xuất thân thiện với người dùng hơn, có thể truy cập thông qua trình đơn 3 dấu chấm mở rộng. Sau khi chọn, người dùng hiện có thể hoàn toàn bỏ qua những thay đổi về danh tính này nếu muốn.

Mặc dù hầu hết các bản cập nhật tệp kê khai đều được áp dụng ngay lập tức, nhưng biểu tượng và tên ứng dụng (được coi là các thành phần nhạy cảm về bảo mật) được lưu trữ riêng. Điều này cho phép người dùng xem xét và áp dụng những thay đổi cụ thể này một cách thuận tiện.

Trình đơn có lựa chọn "Xem xét bản cập nhật ứng dụng".

Khi bạn nhấp vào Xem xét nội dung cập nhật ứng dụng, hộp thoại đã sửa đổi sẽ xuất hiện. Tiêu đề thay đổi tuỳ thuộc vào những phần tử đang cập nhật.

Hộp thoại trên máy tính yêu cầu người dùng xem xét các nội dung cập nhật về biểu tượng và tên.

Các biểu tượng sẽ không được tải xuống nếu trường biểu tượng không có thay đổi

Giờ đây, các biểu tượng được coi là không thay đổi nếu trường icons trong tệp kê khai vẫn giống như phiên bản được áp dụng gần đây nhất. Theo logic mới này, Chrome sẽ tránh tải biểu tượng xuống để so sánh trực quan, xử lý hiệu quả các URL biểu tượng dưới dạng Cache-Control:immutable. Để kích hoạt quá trình cập nhật biểu tượng, hiện tại, nhà phát triển phải sửa đổi siêu dữ liệu hoặc URL biểu tượng.

Xoá giới hạn cập nhật

Vì Chrome không còn tải biểu tượng xuống mỗi khi gặp một tệp kê khai cho ứng dụng đã cài đặt, nên hạn chế trước đó (giới hạn số lần kiểm tra bản cập nhật là một lần mỗi ngày) đã được loại bỏ. Giờ đây, nhà phát triển có thể dựa vào bản cập nhật xảy ra ngay lập tức cho tất cả các thành viên không nhạy cảm với bảo mật.

Xử lý các biến thể nhỏ của biểu tượng trên các nền tảng

Để cải thiện trải nghiệm người dùng, Chrome hiện tự động áp dụng các bản cập nhật biểu tượng có mức chênh lệch dưới 10% khi so sánh từng pixel. Điều này đảm bảo rằng các biến thể nhỏ, chẳng hạn như những biến thể do quá trình mã hoá lại CDN gây ra, không kích hoạt hộp thoại cập nhật gây nhầm lẫn cho người dùng.

Hạn mức này được giới hạn ở mức một lần mỗi ngày để ngăn chặn hành vi lạm dụng có thể xảy ra. Nếu có thêm thay đổi trong khoảng thời gian đó, biểu tượng sẽ được coi là một bản cập nhật tiêu chuẩn và người dùng sẽ được nhắc xác nhận thay đổi.

Ví dụ về việc cập nhật biểu tượng và tên

{
  "name": "Example App",
  "short_name": "App",
  "id": "https://www.example-app.com/",
  "start_url": "https://www.example-app.com/index.html",
  "scope": "https://www.example-app.com/",
  "icons": [
    {
      "src": "https://www.example-app.com/img/app.png",
      "sizes": "512x512",
      "type": "image/png",
      "purpose": "any"
    }
  ],

  ... other attributes omitted ...
}

Việc thay đổi URL biểu tượng đảm bảo rằng người dùng sẽ thấy hộp thoại cập nhật để thay đổi biểu tượng.

{
  "name": "Example App",
  "short_name": "App",
  "id": "https://www.example-app.com/",
  "start_url": "https://www.example-app.com/index.html",
  "scope": "https://www.example-app.com/",
  "icons": [
    {
      "src": "https://www.example-app.com/img/app-NEW-URL.png",
      "sizes": "512x512",
      "type": "image/png",
      "purpose": "any"
    }
  ],

  ... other attributes omitted ...
}