Speculative Loading

Mô tả

Plugin này bổ sung hỗ trợ cho API Quy tắc Dự đoán, cho phép xác định các quy tắc mà theo đó một số URL nhất định được tải trước hoặc hiển thị trước một cách linh hoạt dựa trên tương tác của người dùng.

Xem bản dự thảo đặc tả Quy tắc Dự đoán WICG.

Theo mặc định, plugin được định cấu hình để hiển thị trước URL giao diện người dùng WordPress khi người dùng di chuột qua liên kết có liên quan. Điều này có thể được tùy chỉnh thông qua phần “Tải suy đoán” trong Cài đặt > Đang đọc.

Bạn có thể sử dụng bộ lọc để loại trừ một số đường dẫn URL nhất định đủ điều kiện để tìm nạp trước và hiển thị trước (xem phần Câu hỏi thường gặp). Ngoài ra, bạn có thể thêm lớp CSS ‘không hiển thị trước’ vào bất kỳ liên kết nào (thẻ <a>) không được hiển thị trước. Xem Câu hỏi thường gặp để biết thêm thông tin.

Hỗ trợ trình duyệt

API Quy tắc Dự đoán là một API web mới và chức năng được plugin sử dụng được hỗ trợ trong các trình duyệt dựa trên Chromium như Chrome, Edge hoặc Opera sử dụng phiên bản 121 trở lên. Các trình duyệt khác như Safari và Firefox sẽ bỏ qua chức năng này mà không có tác động xấu nhưng sẽ không được hưởng lợi từ tính năng tải dự đoán. Lưu ý rằng các tiện ích mở rộng có thể tắt tải trước theo mặc định (ví dụ: uBlock Origin sẽ thực hiện việc này).

Các trình duyệt khác sẽ không thấy bất kỳ tác động tiêu cực nào, tuy nhiên tính năng này sẽ không hoạt động đối với những máy khách đó.

Plugin này trước đây được gọi là Quy tắc Dự đoán.

Cài đặt

Cài đặt từ trong WordPress

  1. Hãy truy cập Plugin > Thêm mới.
  2. Tìm kiếm Tải Dự Đoán.
  3. Cài đặt và kích hoạt plugin Speculative Loading.

Cài đặt thủ công

  1. Tải lên toàn bộ thư mục speculation-rules vào thư mục /wp-content/plugins/.
  2. Truy cập Plugin.
  3. Kích hoạt plugin Speculative Loading.

Hỏi đáp

Làm cách nào để ngăn một số URL nhất định được tải trước và hiển thị trước?

Không phải URL nào cũng có thể hiển thị trước một cách hợp lý. Việc hiển thị trước nội dung tĩnh thường đáng tin cậy, tuy nhiên việc hiển thị trước nội dung tương tác, chẳng hạn như URL đăng xuất, có thể dẫn đến sự cố. Vì lý do này, một số URL lõi của WordPress như /wp-login.php/wp-admin/* bị loại trừ khỏi việc tải trước và hiển thị trước. Ngoài ra, bất kỳ URL nào được tạo bằng wp_nonce_url() (hoặc chứa biến truy vấn _wpnonce) cũng bị bỏ qua. Bạn có thể loại trừ các mẫu URL bổ sung bằng cách sử dụng bộ lọc plsr_speculation_rules_href_exclude_paths.

Ví dụ này sẽ đảm bảo rằng các URL như https://example.com/cart/ hoặc https://example.com/cart/foo sẽ bị loại trừ khỏi việc tải trước và hiển thị trước.

<?php

add_filter(
    'plsr_speculation_rules_href_exclude_paths',
    function ( array $exclude_paths ): array {
        $exclude_paths[] = '/cart/*';
        return $exclude_paths;
    }
);

Hãy nhớ rằng đôi khi, việc loại trừ URL khỏi hiển thị trước trong khi vẫn cho phép tải trước có thể hữu ích. Ví dụ: một trang có JavaScript phía máy khách để cập nhật trạng thái người dùng có thể không nên được hiển thị trước, nhưng sẽ hợp lý nếu tải trước.

Với mục đích này, bộ lọc plsr_speculation_rules_href_exclude_paths nhận chế độ hiện tại (hoặc “prefetch” hoặc “prerender”) để cung cấp các ngoại lệ có điều kiện.

Ví dụ sau đây sẽ đảm bảo rằng các URL như https://example.com/products/... không thể được hiển thị trước, trong khi vẫn cho phép chúng được tải trước.

<?php

add_filter(
    'plsr_speculation_rules_href_exclude_paths',
    function ( array $exclude_paths, string $mode ): array {
        if ( 'prerender' === $mode ) {
            $exclude_paths[] = '/products/*';
        }
        return $exclude_paths;
    },
    10,
    2
);

Như đã đề cập ở trên, việc thêm lớp CSS no-prerender vào một liên kết sẽ ngăn liên kết đó hiển thị trước (nhưng không tải trước). Ngoài ra, các liên kết có rel=nofollow sẽ không được tải trước hoặc hiển thị trước vì một số plugin thêm điều này vào các liên kết không phải idempotent (ví dụ: thêm vào giỏ hàng); các liên kết như vậy lý tưởng nên là các nút kích hoạt yêu cầu POST hoặc ít nhất chúng nên sử dụng wp_nonce_url().

Điều này sẽ ảnh hưởng như thế nào đến phân tích và cá nhân hóa?

Việc hiển thị trước có thể ảnh hưởng đến phân tích và cá nhân hóa.

Đối với JavaScript phía máy khách, bạn nên trì hoãn việc này cho đến khi nhấp vào trang và một số giải pháp (như Google Analytics) đã tự động thực hiện việc này để hiển thị trước. Xem Ảnh hưởng đến Phân tích. Ngoài ra, các iframe nguồn gốc chéo sẽ không được tải cho đến khi được kích hoạt, điều này có thể tránh được các sự cố ở đây.

Việc dự đoán khi di chuột (vừa phải) sẽ tăng khả năng trang được tải, so với việc tải trước mà không có tín hiệu này, và do đó giảm thiểu rủi ro ở đây. Ngoài ra, plugin cung cấp tùy chọn chỉ dự đoán khi nhấp chuột/con trỏ xuống (bảo thủ) giúp giảm thiểu rủi ro hơn nữa và là một lựa chọn cho các trang web quan tâm đến điều này, với chi phí là thời gian chờ ngắn hơn và do đó mức tăng hiệu suất ít hơn.

Một trang được hiển thị trước được liên kết với trang hiển thị trước nó, vì vậy việc cá nhân hóa có thể đã được biết đến tại thời điểm này và các thay đổi (ví dụ: duyệt các sản phẩm khác hoặc đăng nhập/thoát) có thể yêu cầu tải lại trang mới, do đó cần hiển thị trước một trang mới, điều này sẽ tính đến các yếu tố này. Nhưng chắc chắn đây là điều cần lưu ý và kiểm tra!

Tôi có thể gửi phản hồi về plugin của mình ở đâu?

Phản hồi được khuyến khích và rất được hoan nghênh, đặc biệt là vì plugin này có thể chứa các tính năng cốt lõi của WordPress trong tương lai. Nếu bạn có đề xuất hoặc yêu cầu về các tính năng mới, bạn có thể gửi chúng dưới dạng sự cố trong kho lưu trữ GitHub của Nhóm Hiệu suất WordPress. Nếu bạn cần trợ giúp khắc phục sự cố hoặc có câu hỏi về plugin, vui lòng tạo một chủ đề mới trên diễn đàn hỗ trợ của chúng tôi.

Tôi có thể báo lỗi bảo mật ở đâu?

Nhóm Hiệu suất và cộng đồng WordPress rất coi trọng các lỗi bảo mật. Chúng tôi đánh giá cao nỗ lực của bạn trong việc tiết lộ một cách có trách nhiệm những phát hiện của mình và sẽ nỗ lực hết sức để ghi nhận những đóng góp của bạn.

Để báo lỗi bảo mật, vui lòng truy cập chương trình WordPress HackerOne.

Tôi có thể đóng góp cho plugin như thế nào?

Chúng tôi luôn hoan nghênh mọi sự đóng góp! Tìm hiểu thêm về cách tham gia trong Sổ tay nhóm Hiệu suất cốt lõi.

Đánh giá

19 Tháng bảy, 2024 1 trả lời
I was using another plugin which does a similar job but Speculative Loading appears to be substantially quicker. Using on about 10 sites and no issues. Thank you
27 Tháng năm, 2024
Es verkürzt die Ladzeit für einen Benutzer sichtbar, auch wenn im Hintergrund die Seite gleichschnell geladen wird, so fühlt es sich für einen Benutzer extrem schnell an.
8 Tháng năm, 2024 1 trả lời
I’ve currently activated this plugin on five sites, some on one server, and then others on another. The plugin has yet to present any plugin conflicts or other issues. The time to load pages is drastically improved based on user intent, and based on this alone, I cannot recommend this plugin enough. I haven’t tested the sites with Lighthouse, but honestly, I don’t feel the need to do that, because it’s about the user experience first, and that is such an improvement with this plugin. Thank you!
Đọc tất cả 16 đánh giá

Người đóng góp & Lập trình viên

“Speculative Loading” là mã nguồn mở. Những người sau đã đóng góp vào plugin này.

Những người đóng góp

“Speculative Loading” đã được dịch qua 8 ngôn ngữ. Cảm ơn những người tham gia dịch vì đóng góp của họ.

Dịch “Speculative Loading” sang ngôn ngữ của bạn.

Muốn tham gia phát triển?

Duyệt code, check out SVN repository, hoặc theo dõi nhật ký phát triển qua RSS.

Nhật ký thay đổi

1.3.1

Sửa lỗi

  • Kiểm tra xem rel có chứa nofollow hay không thay vì chỉ là nofollow khi loại trừ tải dự đoán. (1232)

1.3.0

Cải tiến

  • Ngăn tải dự đoán các liên kết đến thư mục tải lên, nội dung, plugin, mẫu hoặc bảng định kiểu. (1167)
  • Tạo điều kiện nhúng Tải Dự đoán trong các plugin/chủ đề khác. (1159)
  • Cải thiện chất lượng mã tổng thể với các kiểm tra phân tích tĩnh nghiêm ngặt hơn. (775)
  • Tăng yêu cầu PHP tối thiểu lên 7.2. (1130)

1.2.2

Sửa lỗi

  • Sửa lỗi thành phần của các đường dẫn loại trừ href để tính đến mã hóa JSON và các URL trang web/trang chủ khác nhau. (1164)

Tài liệu

  • Cập nhật tệp readme với hỗ trợ trình duyệt và phần Câu hỏi thường gặp về phân tích và cá nhân hóa. (1155)

1.2.1

Cải tiến

  • Thêm liên kết cài đặt vào liên kết hành động của plugin Speculative Loading. (1145)
  • Tăng phiên bản PHP tối thiểu lên 7.2. (1130)

Sửa lỗi

  • Loại trừ các URL _wpnonce trong quy tắc dự đoán. (1143)
  • Loại trừ các liên kết rel=nofollow khỏi tải trước/hiển thị trước. (1142)

1.2.0

  • Thêm uninstall.php bị thiếu để xóa tùy chọn cơ sở dữ liệu của plugin. (1128)

1.1.0

  • Cho phép loại trừ cụ thể các mẫu URL khỏi hiển thị trước hoặc tải trước. (1025)
  • Đổi tên plugin thành “Speculative Loading”. (1101)
  • Thêm thẻ trình tạo Tải Dự đoán. (1102)
  • Tăng phiên bản WP tối thiểu bắt buộc lên 6.4. (1062)
  • Cập nhật phiên bản WordPress đã thử nghiệm lên 6.5. (1027)

1.0.1

  • Thoát tiền tố đường dẫn và hạn chế nó là tên đường dẫn trong Quy tắc Dự đoán. (951)
  • Buộc hỗ trợ chủ đề tập lệnh HTML5 khi in tập lệnh JSON. (952)
  • Thêm biểu tượng và biểu ngữ cho thư mục plugin. (987)

1.0.0

  • Phát hành ban đầu của plugin Speculative Loading như một plugin độc lập. (733)