SXG (Signed Exchanges) là gì? Tăng tốc độ tải và Cải thiện Trải nghiệm Người dùng với Web Packages

Trong nỗ lực không ngừng nhằm cải thiện tốc度 và trải nghiệm người dùng trên web, các công nghệ mới liên tục được phát triển. SXG (Signed Exchanges), hay đầy đủ là Signed HTTP Exchanges, là một phần của sáng kiến Web Packages, cho phép các nhà phân phối nội dung (như Google Search) phân phối các trang web một cách an toàn trong khi vẫn hiển thị URL gốc của nhà xuất bản. Điều này mang lại lợi ích kép: tốc độ tải trang nhanh hơn nhờ vào việc phân phối từ các máy chủ gần người dùng (ví dụ: cache của Google) và duy trì nhận diện thương hiệu cũng như quyền kiểm soát của nhà xuất bản đối với nội dung của họ.

SXG đặc biệt quan trọng trong bối cảnh Google ngày càng ưu tiên trải nghiệm trang (Page Experience) và các chỉ số Core Web Vitals. Việc hiểu và triển khai SXG có thể mang lại lợi thế cạnh tranh cho các website, đặc biệt là các trang tin tức và nội dung. Đây là một kỹ thuật nâng cao trong tối ưu hóa website (Website Optimization).

SXG (Signed Exchanges) là gì?

Signed HTTP Exchanges (SXG) là một công nghệ cho phép một trang web được "ký" (signed) bằng chữ ký số bởi nhà xuất bản gốc. Chữ ký này xác minh rằng nội dung được phân phối là chính xác và không bị thay đổi so với nội dung gốc từ máy chủ của nhà xuất bản, ngay cả khi nó được phân phối từ một máy chủ của bên thứ ba (ví dụ: cache của Google).

Khi một trình duyệt hỗ trợ SXG nhận được một trang SXG từ một nhà phân phối, nó có thể xác minh chữ ký đó. Nếu chữ ký hợp lệ, trình duyệt sẽ hiển thị URL gốc của nhà xuất bản trên thanh địa chỉ, mặc dù nội dung thực tế có thể được tải từ một máy chủ khác gần hơn (ví dụ: web.dev thay vì google.com/amp/s/web.dev...).

Mục tiêu chính của SXG:

  • Cho phép phân phối nội dung từ cache của bên thứ ba mà vẫn giữ được URL gốc: Giúp người dùng biết họ đang xem nội dung từ nguồn nào, tăng tính tin cậy.
  • Tăng tốc độ tải trang: Nhờ việc tải trước (prefetch) và phục vụ nội dung từ các máy chủ cache nhanh chóng, gần người dùng.
  • Cải thiện trải nghiệm người dùng: Giảm thời gian chờ đợi.
  • Bảo vệ tính toàn vẹn của nội dung: Chữ ký số đảm bảo nội dung không bị sửa đổi.

SXG thường được nhắc đến trong mối liên hệ với Google Search, nơi nó có thể cho phép các kết quả tìm kiếm (đặc biệt là các trang AMP hoặc các trang được tối ưu hóa tốt) được tải gần như tức thì từ cache của Google trong khi vẫn hiển thị URL của nhà xuất bản.

SXG hoạt động như thế nào?

Quá trình hoạt động của SXG có thể được tóm tắt như sau:

  1. Nhà xuất bản tạo và ký SXG:
    • Máy chủ của nhà xuất bản tạo ra một phiên bản SXG của trang web. Điều này bao gồm nội dung trang (HTML, CSS, JS được nhúng hoặc liên kết tương đối) và các HTTP header quan trọng.
    • Toàn bộ gói SXG này sau đó được ký bằng một chứng chỉ số đặc biệt (khác với chứng chỉ SSL/TLS thông thường) do một Tổ chức Chứng thực (Certificate Authority - CA) tin cậy cấp, xác minh quyền sở hữu tên miền. Chữ ký này đảm bảo tính xác thực và toàn vẹn của nội dung.
  2. Nhà phân phối (ví dụ: Google) thu thập và lưu trữ SXG:
    • Các trình thu thập dữ liệu (crawlers) của nhà phân phối (như Googlebot) phát hiện và tải các tệp SXG này.
    • Nhà phân phối lưu trữ các tệp SXG này trên các máy chủ cache của họ.
  3. Người dùng tìm kiếm và nhấp vào kết quả:
    • Khi người dùng thực hiện tìm kiếm trên Google và nhấp vào một kết quả được phân phối dưới dạng SXG, Google có thể bắt đầu tải trước (prefetch) nội dung SXG đó từ cache của mình ngay cả trước khi người dùng thực sự điều hướng.
  4. Trình duyệt nhận và xác minh SXG:
    • Trình duyệt của người dùng nhận được tệp SXG từ máy chủ của nhà phân phối.
    • Trình duyệt kiểm tra chữ ký số trong tệp SXG bằng cách sử dụng khóa công khai của chứng chỉ đã được CA tin cậy cấp.
  5. Hiển thị nội dung với URL gốc:
    • Nếu chữ ký hợp lệ, trình duyệt sẽ tin tưởng rằng nội dung này đến từ nhà xuất bản gốc và không bị thay đổi.
    • Trình duyệt sẽ hiển thị URL gốc của nhà xuất bản trên thanh địa chỉ, mặc dù nội dung có thể đã được tải từ cache của nhà phân phối.
    • Nội dung được hiển thị cho người dùng.

Các thành phần chính của một SXG:

  • Payload (Tải trọng): Nội dung thực tế của trang web (HTML và các tài nguyên liên quan) và các HTTP header của phản hồi gốc.
  • Signature (Chữ ký): Một chữ ký số bao gồm các thông tin như URL yêu cầu, thông tin chứng chỉ, ngày hết hạn của chữ ký, và chữ ký mật mã của payload và các header.

Lợi ích của việc sử dụng SXG

Triển khai SXG có thể mang lại nhiều lợi ích đáng kể:

  1. Tốc độ tải trang nhanh hơn:
    • Tải trước (Prefetching): Các nhà phân phối như Google có thể tải trước nội dung SXG khi người dùng đang xem trang kết quả tìm kiếm, giúp trang đích tải gần như ngay lập tức khi người dùng nhấp vào.
    • Phục vụ từ Cache gần hơn: Nội dung được phân phối từ các máy chủ cache của nhà phân phối, thường gần với người dùng hơn so với máy chủ gốc của nhà xuất bản.
  2. Cải thiện Core Web Vitals và Trải nghiệm Trang (Page Experience):
    • Tốc độ tải nhanh hơn, đặc biệt là Largest Contentful Paint (LCP), đóng góp trực tiếp vào việc cải thiện các chỉ số Core Web Vitals.
    • Điều này có thể ảnh hưởng tích cực đến thứ hạng SEO vì Google sử dụng Trải nghiệm Trang làm một yếu tố xếp hạng.
  3. Hiển thị URL gốc của Nhà xuất bản:
    • Không giống như AMP Cache truyền thống (khi không dùng SXG), nơi URL hiển thị có thể là của Google (ví dụ: google.com/amp/...), SXG cho phép URL gốc của nhà xuất bản được hiển thị.
    • Điều này giúp duy trì nhận diện thương hiệu, tăng tính tin cậy và giúp người dùng hiểu rõ họ đang ở đâu.
  4. Bảo mật và Tính toàn vẹn Nội dung:
    • Chữ ký số đảm bảo rằng nội dung không bị nhà phân phối hoặc bất kỳ bên trung gian nào thay đổi.
  5. Quyền riêng tư tốt hơn cho người dùng (so với một số kỹ thuật tải trước khác):
    • Khi trình duyệt tải trước một SXG, nó không gửi cookie hoặc thông tin nhận dạng cá nhân khác của người dùng đến máy chủ gốc cho đến khi người dùng thực sự điều hướng đến trang đó.
  6. Nội dung có thể di động (Portable Content):
    • Vì SXG là một gói tự chứa và đã được ký, nó có thể được chia sẻ hoặc phân phối qua nhiều kênh khác nhau (ví dụ: qua email, ứng dụng nhắn tin) mà vẫn duy trì tính xác thực.

Hạn chế và Thách thức của SXG

Mặc dù có nhiều lợi ích, SXG cũng có những hạn chế và thách thức nhất định:

  • Độ phức tạp trong triển khai:
    • Việc tạo và ký các tệp SXG đòi hỏi thiết lập phía máy chủ phức tạp hơn, bao gồm việc lấy và quản lý chứng chỉ SXG đặc biệt, cũng như cấu hình máy chủ để tạo ra các gói SXG.
    • Cần có công cụ hoặc dịch vụ hỗ trợ để tự động hóa quá trình này.
  • Quản lý Cache và Cập nhật nội dung:
    • Nội dung SXG được cache bởi các nhà phân phối. Việc đảm bảo nội dung cache luôn được cập nhật khi nội dung gốc thay đổi đòi hỏi cơ chế làm mới cache hiệu quả. Chữ ký SXG có thời hạn sử dụng (thường là vài ngày) để giải quyết một phần vấn đề này, nhưng việc cập nhật nhanh chóng vẫn là một thách thức.
  • Giới hạn về nội dung động và cá nhân hóa:
    • SXG phù hợp nhất với nội dung tĩnh hoặc gần tĩnh. Việc tạo SXG cho nội dung động cao hoặc được cá nhân hóa sâu cho từng người dùng là rất khó khăn hoặc không khả thi, vì mỗi phiên bản sẽ cần một chữ ký riêng.
  • Hỗ trợ từ Trình duyệt và Nhà phân phối:
    • Mặc dù các trình duyệt dựa trên Chromium (Chrome, Edge) hỗ trợ tốt SXG, sự hỗ trợ từ các trình duyệt khác có thể hạn chế hơn.
    • Lợi ích lớn nhất của SXG hiện tại đến từ việc Google Search sử dụng nó để tải trước kết quả.
  • Chứng chỉ SXG:
    • Cần có chứng chỉ đặc biệt để ký SXG, khác với chứng chỉ SSL/TLS thông thường. Việc lấy và quản lý các chứng chỉ này có thể thêm một bước phức tạp. DigiCert là một trong những CA cung cấp loại chứng chỉ này.
  • Kích thước tệp lớn hơn một chút:
    • Tệp SXG bao gồm cả chữ ký và các header, nên có thể lớn hơn một chút so với phản hồi HTML thông thường. Tuy nhiên, lợi ích về tốc độ từ việc tải trước và cache thường bù đắp cho điều này.

Cách triển khai SXG cho Website

Việc triển khai SXG có thể được thực hiện thông qua một số cách:

  1. Sử dụng Công cụ hoặc Dịch vụ của Bên thứ ba:
    • Đây là cách tiếp cận dễ dàng nhất cho nhiều người. Một số CDN hoặc nền tảng tối ưu hóa web cung cấp dịch vụ tự động tạo và phục vụ SXG cho website của bạn.
    • Ví dụ: Cloudflare cung cấp tính năng "Automatic Signed Exchanges".
  2. Sử dụng Công cụ Nguồn mở:
    • Google đã phát triển các công cụ nguồn mở để giúp tạo SXG, chẳng hạn như sxg-tools (một bộ công cụ dòng lệnh) và các module cho web server như Nginx (nginx-sxg-module).
    • Cách này đòi hỏi kiến thức kỹ thuật sâu hơn để cài đặt, cấu hình và bảo trì.
  3. Tích hợp vào Web Server của bạn:
    • Cấu hình web server (ví dụ: Nginx với module SXG) để tự động tạo và ký SXG cho các phản hồi phù hợp.
    • Quá trình này bao gồm việc thiết lập chứng chỉ SXG, cấu hình các quy tắc để quyết định trang nào sẽ được tạo SXG, và xử lý việc làm mới chữ ký.

Các bước chính trong việc tự triển khai SXG:

  • Lấy Chứng chỉ SXG: Đăng ký một chứng chỉ có phần mở rộng CanSignHttpExchanges từ một CA được trình duyệt tin cậy (ví dụ: DigiCert).
  • Cài đặt Công cụ SXG: Cài đặt các công cụ cần thiết trên máy chủ của bạn (ví dụ: sxg-tools hoặc module web server).
  • Cấu hình Web Server:
    • Định cấu hình server để tạo các gói SXG cho các trang HTML.
    • Đảm bảo các header HTTP cần thiết (như Content-Type: application/signed-exchange;v=b3, Vary: Accept, Sec-Web-Package-Accept) được thiết lập đúng.
    • Thiết lập cơ chế để tự động ký lại các SXG khi chúng sắp hết hạn hoặc khi nội dung thay đổi.
  • Quảng bá SXG:
    • Đảm bảo website của bạn quảng bá sự sẵn có của phiên bản SXG thông qua thẻ <link rel="signed-exchange" href="..."> trong HTML hoặc header Link HTTP.
  • Kiểm tra: Sử dụng các công cụ như SXG Validator của Google để kiểm tra xem SXG của bạn có được tạo và ký đúng cách hay không.

Các câu hỏi thường gặp (FAQ) về SXG

  1. SXG có giống AMP không?

    • Không hoàn toàn, nhưng chúng có thể hoạt động cùng nhau. AMP (Accelerated Mobile Pages) là một framework để tạo các trang web nhẹ, tải nhanh. SXG là một cơ chế phân phối. Một trang AMP có thể được phân phối dưới dạng SXG để có được lợi ích của việc hiển thị URL gốc và tải trước từ Google Cache. Tuy nhiên, SXG cũng có thể được sử dụng cho các trang không phải AMP.
  2. Tôi có cần sử dụng SXG nếu website của tôi đã rất nhanh không?

    • SXG vẫn có thể mang lại lợi ích ngay cả khi website của bạn đã nhanh, chủ yếu thông qua khả năng tải trước (prefetching) từ các nhà phân phối như Google Search. Điều này có thể làm cho trải nghiệm tải trang gần như tức thì, một điều khó đạt được chỉ bằng cách tối ưu hóa máy chủ của bạn.
  3. SXG có ảnh hưởng đến phân tích website (web analytics) không?

    • Cần có sự cân nhắc. Vì SXG được cache và phân phối bởi bên thứ ba, các yêu cầu ban đầu có thể không đến máy chủ của bạn. Tuy nhiên, khi người dùng tương tác với trang (ví dụ: nhấp vào liên kết, cuộn), các sự kiện JavaScript hoặc "beacon" vẫn có thể được gửi đến máy chủ phân tích của bạn. Google cũng cung cấp các hướng dẫn để đảm bảo việc theo dõi phân tích chính xác với SXG.
  4. Tất cả các trình duyệt đều hỗ trợ SXG?

    • Hiện tại, hỗ trợ tốt nhất đến từ các trình duyệt dựa trên Chromium (Google Chrome, Microsoft Edge). Firefox và Safari có thể chưa hỗ trợ đầy đủ hoặc có kế hoạch hỗ trợ khác nhau. Tuy nhiên, ngay cả khi trình duyệt không hỗ trợ SXG, người dùng vẫn sẽ thấy phiên bản HTML thông thường của trang.
  5. Chi phí để triển khai SXG là bao nhiêu?

    • Chi phí chính có thể đến từ:
      • Chứng chỉ SXG: Một số CA tính phí cho loại chứng chỉ này.
      • Dịch vụ của bên thứ ba: Nếu bạn sử dụng dịch vụ tự động hóa SXG, sẽ có phí dịch vụ.
      • Thời gian và công sức phát triển/cấu hình: Nếu bạn tự triển khai.

SXG là một công nghệ đầy hứa hẹn, đặc biệt trong việc cải thiện trải nghiệm người dùng trên các nền tảng phân phối nội dung lớn như Google Search. Mặc dù việc triển khai có thể phức tạp, những lợi ích về tốc độ và khả năng giữ URL gốc làm cho nó trở thành một lựa chọn hấp dẫn cho các nhà xuất bản muốn tối đa hóa hiệu suất và nhận diện thương hiệu của mình trên web.