Proxy tìm nạp trước riêng tư trong Chrome

Katie Hempenius
Katie Hempenius
Kenji Baheux
Kenji Baheux
Michael Buettner
Michael Buettner

Tăng tốc Thời gian hiển thị nội dung lớn nhất (LCP) bằng tính năng tìm nạp trước trên nhiều trang web.

Kể từ Chrome 103 dành cho Android, Chrome sẽ dần triển khai tính năng proxy tìm nạp trước riêng tư để tăng tốc độ điều hướng bên ngoài từ Google Tìm kiếm và các trang web tham gia khác thêm 30% ở mức trung bình. Tính năng proxy tìm nạp trước riêng tư này cho phép tìm nạp trước nội dung nhiều nguồn gốc mà không tiết lộ thông tin người dùng cho trang web đích cho đến khi người dùng điều hướng.

Hãy đọc tiếp để tìm hiểu về cách hoạt động của tính năng này, cách tính năng này có thể giúp cải thiện đáng kể Thời gian hiển thị nội dung lớn nhất (LCP) trên trang web của bạn, hoặc cách các trang web giới thiệu có thể giúp người dùng đạt được mục tiêu bằng cách tăng tốc việc điều hướng trên nhiều trang web.

Cách hoạt động của Proxy tìm nạp trước riêng tư

Kênh liên lạc bảo mật

Tính năng này sử dụng proxy CONNECT để thiết lập kênh liên lạc bảo mật giữa Chrome và máy chủ lưu trữ nội dung cần tìm nạp trước. Kênh liên lạc bảo mật này ngăn proxy kiểm tra bất kỳ hoạt động chuyển dữ liệu nào. Đáng chú ý là mặc dù Proxy tìm nạp trước riêng tư nhất thiết phải nhìn thấy tên máy chủ để thiết lập kênh liên lạc bảo mật, nhưng proxy đó sẽ không thấy URL đầy đủ cũng như bản thân tài nguyên.

Ảnh động minh hoạ luồng dữ liệu qua proxy.
Việc tìm nạp trước trang web qua proxy CONNECT giúp tránh rò rỉ thông tin người dùng.

Ngoài ra, do kênh liên lạc bảo mật được mã hoá hai đầu, nên các bên trung gian không thể quan sát tên máy chủ cũng như nội dung của trang web được tìm nạp trước. Cuối cùng, proxy vốn đã ngăn máy chủ đích xem địa chỉ IP của người dùng.

Ngăn chặn việc nhận dạng người dùng

Ngoài các khía cạnh mạng được nêu chi tiết trước đó, chúng ta cũng cần ngăn các máy chủ nhận dạng người dùng tại thời điểm tìm nạp trước, thông qua thông tin đã lưu trữ trước đó trên thiết bị của họ. Do đó, Chrome hiện hạn chế việc sử dụng Proxy tìm nạp trước riêng tư cho các trang web mà người dùng không có cookie hoặc có trạng thái cục bộ khác. Dưới đây là các hạn chế đối với các yêu cầu tìm nạp trước được thực hiện qua Proxy tìm nạp trước riêng tư:

  • Cookie: Yêu cầu tìm nạp trước không được phép mang theo cookie.
    • Nếu có cookie cho một tài nguyên, Chrome sẽ tìm nạp không có thông tin xác thực nhưng sẽ không sử dụng phản hồi (xem phần Lưu vào bộ nhớ đệm sau).
    • Mặc dù phản hồi cho một yêu cầu tìm nạp trước có thể bao gồm cookie, nhưng những cookie này sẽ chỉ được lưu nếu người dùng điều hướng tới trang đã tìm nạp trước.
  • Tạo vân tay số: Các bề mặt khác có thể dùng để tạo vân tay số cũng được điều chỉnh. Ví dụ: tiêu đề User-Agent do proxy tìm nạp trước gửi chỉ chứa ít thông tin.

Trong tương lai, chúng tôi hy vọng sẽ mở rộng Proxy tìm nạp trước riêng tư cho các đường liên kết có cookie hoặc trạng thái cục bộ mà vẫn giữ nguyên các đặc điểm về quyền riêng tư. Xem phần Tiếp theo là gì để biết thêm chi tiết.

Chức năng lưu vào bộ nhớ đệm

Chrome sẽ tìm nạp trước các tài nguyên ngay cả khi chúng đã có trong bộ nhớ đệm, nhưng chúng sẽ không chứa bất kỳ tiêu đề có điều kiện nào như ETag hoặc If-Modified-Since (các tiêu đề này chứa giá trị được đặt máy chủ có thể dùng để theo dõi ngay cả khi không có cookie). Quá trình tìm nạp trước này được thực hiện nhằm ngăn chặn rò rỉ trạng thái bộ nhớ đệm của ứng dụng tới trang web đã tìm nạp trước. Ngoài ra, Chrome sẽ chỉ chuyển tài nguyên đã tìm nạp trước vào bộ nhớ đệm nếu người dùng quyết định chuyển đến trang web đã tìm nạp trước.

Bắt đầu sử dụng proxy tìm nạp trước riêng tư

Dành cho chủ sở hữu trang web

Chủ sở hữu trang web không cần làm gì để bắt đầu hưởng lợi từ proxy tìm nạp trước riêng tư trên các đường liên kết mà người dùng không có cookie hoặc trạng thái cục bộ. Qua các thử nghiệm của chúng tôi, đây là một cơ hội lớn đối với hầu hết các trang web. Ngoài ra, bạn nên tạo ấn tượng với những khách truy cập lần đầu hoặc những khách truy cập không thường xuyên bằng trải nghiệm tải siêu nhanh. Từ các thử nghiệm trước đây, chúng tôi nhận thấy Thời gian hiển thị nội dung lớn nhất nhanh hơn từ 20% đến 30% trong các hoạt động điều hướng được tìm nạp trước.

Trong tương lai, chúng tôi hy vọng có thể mở rộng phạm vi cung cấp tính năng này cho các đường liên kết với cookie hoặc trạng thái cục bộ, đồng thời vẫn duy trì các đặc điểm về quyền riêng tư. Thách thức với cookie là chúng có thể được sử dụng để thay đổi trải nghiệm người dùng theo các cách khó dự đoán. Vì vậy, chủ sở hữu trang web rất có thể sẽ phải chọn sử dụng hoặc điều chỉnh trang web của họ để hưởng lợi từ Proxy tìm nạp trước riêng tư cho các đường liên kết có cookie.

Cụ thể, mặc dù các yêu cầu tìm nạp trước sẽ vẫn không có thông tin xác thực, nhưng trang web sẽ có quyền truy cập vào cookie và trạng thái cục bộ khác khi người dùng truy cập vào trang web đó. Nhà phát triển có thể tận dụng lợi thế này để thêm lại hoạt động cá nhân hoá và các thay đổi dựa trên cookie hoặc trạng thái cục bộ. Hoặc có lẽ các nhà phát triển cũng muốn khai báo một số tài nguyên nhất định là hoàn toàn phù hợp để tìm nạp trước và sử dụng mà không cần cookie (tức là các tài nguyên không phụ thuộc vào bất kỳ cookie nào). Vui lòng xem phần Các bước tiếp theo để tìm hiểu thêm và cung cấp thông tin cho kế hoạch của chúng tôi.

Dịch vụ hoặc nội dung phụ thuộc vào địa lý

Nếu trang web của bạn hoạt động theo cách khác nhau (ví dụ: nội dung khác nhau hoặc quyền truy cập có chọn lọc) trên các thị trường dựa trên địa chỉ IP của người dùng, thì có thể bạn sẽ thắc mắc về cách xử lý các yêu cầu tìm nạp trước của Proxy tìm nạp trước riêng tư. Bạn cần biết rằng Proxy tìm nạp trước riêng tư sử dụng một số máy chủ trải rộng trên toàn cầu và IP của proxy sẽ định vị địa lý đến quốc gia mà từ đó người dùng bắt đầu tìm nạp trước.

Do đó, sau đây là những gì chúng tôi đề xuất:

  1. Xác định các yêu cầu tìm nạp trước từ Proxy tìm nạp trước riêng tư nhờ sự hiện diện của tiêu đề HTTP Sec-Purpose: Prefetch; anonymous-client-ip.
  2. Tra cứu vị trí địa lý của Proxy tìm nạp trước riêng tư đã đưa ra yêu cầu thông qua địa chỉ IP của proxy đó. Hãy xem tài nguyên này để biết danh sách mới nhất các khu vực địa lý được triển khai và địa chỉ IP tương ứng.
  3. Cung cấp tài nguyên phù hợp với thị trường gắn với vị trí địa lý cụ thể này.

Vật dụng hỗ trợ điều khiển giao thông

Từ các thử nghiệm trước đây, chúng tôi biết rằng tính năng này thường dẫn đến thêm dưới 2% yêu cầu cho các tài nguyên chính (ví dụ: tài liệu HTML). Tuy nhiên, nếu thận trọng, bạn có thể sử dụng trường phần của lời khuyên về lưu lượng truy cập để kiểm soát lưu lượng truy cập mà Proxy tìm nạp trước riêng tư sẽ cho phép. Bạn có thể bắt đầu với một phân số nhỏ như 0,3 (tức là 30%) và tăng dần lên 1,0 (nghĩa là 100%) bằng cách thêm JSON sau vào tệp /.well-known/traffic-advice. Tệp này cần được phân phát với loại MIME application/trafficadvice+json:

[{
  "user_agent": "prefetch-proxy",
  "fraction": 0.3
}]

Trường fraction là một số thực trong khoảng từ 0 (không có tìm nạp trước) đến 1.0 (100% yêu cầu tìm nạp trước đều đi qua).

Bạn cũng có thể tắt hoàn toàn tính năng này bằng cấu hình sau:

[{
  "user_agent": "prefetch-proxy",
  "disallow": true
}]

Tệp /.well-known/traffic-advice được tìm nạp bằng proxy chứ không phải ứng dụng và được lưu vào bộ nhớ đệm tại proxy theo ngữ nghĩa bộ nhớ đệm HTTP thông thường. Để linh hoạt hơn (ví dụ: khi lượng truy cập quá tải đột ngột tăng đột biến), bạn nên tạm thời từ chối các yêu cầu tìm nạp trước (Sec-Purpose: prefetch;anonymous-client-ip) có mã trạng thái 503 và bằng cách đặt tiêu đề Cache-Control: no-store vào phản hồi. Bạn cũng có thể thêm tiêu đề Retry-After để cho Chrome biết thời gian chờ trước khi thử lại các yêu cầu tìm nạp trước.

Dành cho chủ sở hữu trang web giới thiệu

Nếu vận hành một trang web có nhiều đường liên kết đến các trang web khác, bạn có thể quan tâm đến việc sử dụng tính năng Proxy tìm nạp trước riêng tư để tăng tốc những hoạt động điều hướng nhiều nguồn gốc này. Bạn sẽ cần thêm quy tắc suy đoán vào các trang của mình để Chrome biết trang nào nên tìm nạp trước qua Proxy tìm nạp trước riêng tư. Sau đây là một ví dụ đơn giản:

<script type="speculationrules">
{
  "prefetch": [
    "source": "list",
    "urls": ["https://example.com/index.html"],
    "requires": ["anonymous-client-ip-when-cross-origin"]
  ]
}
</script>

Tiếp theo là gì?

Lần ra mắt này chỉ là bước đầu tiên. Chúng tôi hy vọng có thể mở rộng và cải thiện tính năng này dựa trên sự quan tâm và ý kiến phản hồi của cộng đồng. Ví dụ: chúng tôi rất mong nhận được ý kiến phản hồi về cách mở rộng sang các liên kết có cookie và trạng thái cục bộ theo cách giảm thiểu sự phiền hà của nhà phát triển hoặc cách làm cho tính năng này hữu ích hơn cho các trang web giới thiệu.

Đọc thêm