{"id":3237,"date":"2025-02-14T08:51:31","date_gmt":"2025-02-14T08:51:31","guid":{"rendered":"https:\/\/s-o-s.net\/speculative-loading\/"},"modified":"2025-02-14T08:51:31","modified_gmt":"2025-02-14T08:51:31","slug":"speculative-loading","status":"publish","type":"post","link":"https:\/\/s-o-s.net\/en_gb\/speculative-loading\/","title":{"rendered":"Speculative Loading"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<article id=\"post-186530\" class=\"alignwide post-186530 plugin type-plugin status-publish hentry plugin_tags-javascript plugin_tags-performance plugin_tags-prefetch plugin_tags-prerender plugin_tags-speculation-rules plugin_category-security-and-spam-protection plugin_category-utilities-and-tools plugin_contributors-wordpressdotorg plugin_business_model-community plugin_committers-flixos90 plugin_committers-performanceteam plugin_committers-westonruter plugin_support_reps-adamdunnage plugin_support_reps-jamesosborne plugin_support_reps-tunetheweb\">\n<div class=\"plugin-banner\" id=\"plugin-banner-speculation-rules\"><\/div>\n<header class=\"plugin-header\">\n<div class=\"entry-heading-container\">\n<div>\n<div class=\"entry-thumbnail\">\n\t\t\t\t\t<img decoding=\"async\" class=\"plugin-icon\" src=\"https:\/\/ps.w.org\/speculation-rules\/assets\/icon.svg?rev=3098224\" alt=\"\">\t\t\t\t<\/div>\n<div>\n<h1 class=\"plugin-title\">Speculative Loading<\/h1>\n<p>\t\t\t\t\t<span class=\"byline\">By <span class=\"author vcard\"><a target=\"_blank\" class=\"url fn n\" href=\"https:\/\/profiles.wordpress.org\/performanceteam\/\" rel=\"noopener\">performanceteam<\/a><\/span><\/span>\n\t\t\t\t<\/div>\n<\/p><\/div>\n<div class=\"plugin-actions\">\n<div class=\"wp-block-button is-small plugin-download download-button\"><a target=\"_blank\" class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/downloads.wordpress.org\/plugin\/speculation-rules.1.4.0.zip\" rel=\"noopener\">Download<\/a><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/header>\n<p><!-- .entry-header --><\/p>\n<p>\t<span id=\"description\"><\/span><br \/>\n\t<span id=\"reviews\"><\/span><br \/>\n\t<span id=\"installation\"><\/span><br \/>\n\t<span id=\"developers\"><\/span><br \/>\n\t<span id=\"advanced\" class=\"\"><\/span><br \/>\n\t<span id=\"section-links\"><\/p>\n<ul class=\"tabs clear\">\n<li id=\"tablink-description\"><a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/speculation-rules\/#description\" rel=\"noopener\">Details<\/a><\/li>\n<li id=\"tablink-reviews\"><a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/speculation-rules\/#reviews\" rel=\"noopener\">Reviews<\/a><\/li>\n<li id=\"tablink-installation\">\n\t\t\t\t<a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/speculation-rules\/#installation\" rel=\"noopener\">Installation<\/a>\n\t\t\t<\/li>\n<li id=\"tablink-developers\"><a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/speculation-rules\/#developers\" rel=\"noopener\">Development<\/a><\/li>\n<\/ul>\n<div id=\"link-support\">\n\t\t\t<a target=\"_blank\" href=\"https:\/\/wordpress.org\/support\/plugin\/speculation-rules\/\" rel=\"noopener\">Support<\/a>\n\t\t<\/div>\n<p>\t<\/span><br \/>\n\t<script type=\"text\/javascript\">if ( '#changelog' == window.location.hash ) { window.setTimeout( function() { window.location.hash=\"#developers\"; }, 10 ); }<\/script><\/p>\n<div class=\"entry-content\">\n<div id=\"tab-description\" class=\"plugin-description section\">\n<h2 id=\"description-header\">Description<\/h2>\n<p>This plugin adds support for the <a target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Speculation_Rules_API\" rel=\"nofollow ugc noopener\">Speculation Rules API<\/a>, which allows defining rules by which certain URLs are dynamically prefetched or prerendered.<\/p>\n<p>See the <a target=\"_blank\" href=\"https:\/\/wicg.github.io\/nav-speculation\/speculation-rules.html\" rel=\"nofollow ugc noopener\">Speculation Rules WICG specification draft<\/a>.<\/p>\n<p>By default, the plugin is configured to prerender WordPress frontend URLs when the user interacts with a relevant link. This can be customized via the \u201cSpeculative Loading\u201d section in the <em>Settings &gt; Reading<\/em> admin screen.<\/p>\n<p>A filter can be used to exclude certain URL paths from being eligible for prefetching and prerendering (see FAQ section). Alternatively, you can add the <code>no-prerender<\/code> CSS class to any link (<code>&lt;a&gt;<\/code> tag) that should not be prerendered. See FAQ for more information.<\/p>\n<h4>Browser support<\/h4>\n<p>The Speculation Rules API is a new web API, and the functionality used by the plugin is supported in Chromium-based browsers such as Chrome, Edge, or Opera using version 121 or above. Other browsers such as Safari and Firefox will ignore the functionality with no ill effects; they will simply not benefit from the speculative loading. Note that certain browser extensions may disable preloading by default.<\/p>\n<ul>\n<li><a target=\"_blank\" href=\"https:\/\/caniuse.com\/mdn-html_elements_script_type_speculationrules\" rel=\"nofollow ugc noopener\">Browser support for the Speculation Rules API in general<\/a><\/li>\n<li><a target=\"_blank\" href=\"https:\/\/developer.chrome.com\/docs\/web-platform\/prerender-pages\" rel=\"nofollow ugc noopener\">Information on document rules syntax support used by the plugin<\/a><\/li>\n<\/ul>\n<p><em>This plugin was formerly known as Speculation Rules.<\/em><\/p>\n<\/div>\n<div id=\"tab-installation\" class=\"plugin-installation section\">\n<h2 id=\"installation-header\">Installation<\/h2>\n<h4>Installation from within WordPress<\/h4>\n<ol>\n<li>Visit <strong>Plugins &gt; Add New<\/strong>.<\/li>\n<li>Search for <strong>Speculative Loading<\/strong>.<\/li>\n<li>Install and activate the <strong>Speculative Loading<\/strong> plugin.<\/li>\n<\/ol>\n<h4>Manual installation<\/h4>\n<ol>\n<li>Upload the entire <code>speculation-rules<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Visit <strong>Plugins<\/strong>.<\/li>\n<li>Activate the <strong>Speculative Loading<\/strong> plugin.<\/li>\n<\/ol>\n<\/div>\n<div id=\"faq\" class=\"plugin-faq section\">\n<h2 id=\"faq-header\">FAQ<\/h2>\n<dl>\n<dt id=\"how%20can%20i%20prevent%20certain%20urls%20from%20being%20prefetched%20and%20prerendered%3F\">\n<h3>How can I prevent certain URLs from being prefetched and prerendered?<\/h3>\n<\/dt>\n<dd>\n<p>Not every URL can be reasonably prerendered. Prerendering static content is typically reliable, however prerendering interactive content, such as a logout URL, can lead to issues. For this reason, certain WordPress core URLs such as <code>\/wp-login.php<\/code> and <code>\/wp-admin\/*<\/code> are excluded from prefetching and prerendering. Additionally, any URLs generated with <code>wp_nonce_url()<\/code> (or which contains the <code>_wpnonce<\/code> query var) and <code>nofollow<\/code> links are also ignored. You can exclude additional URL patterns by using the <code>plsr_speculation_rules_href_exclude_paths<\/code> filter.<\/p>\n<p>The following example ensures that URLs like <code>https:\/\/example.com\/cart\/<\/code> or <code>https:\/\/example.com\/cart\/foo<\/code> are excluded from prefetching and prerendering:<\/p>\n<pre><code>&lt;?php\nadd_filter(\n    'plsr_speculation_rules_href_exclude_paths',\n    function ( array $exclude_paths ): array {\n        $exclude_paths[] = '\/cart\/*';\n        return $exclude_paths;\n    }\n);\n<\/code><\/pre>\n<p>Keep in mind that sometimes it may be useful to exclude a URL from prerendering while still allowing it to be prefetched. For example, a page with client-side JavaScript to update user state should probably not be prerendered, but it would be reasonable to prefetch.<\/p>\n<p>For this purpose, the <code>plsr_speculation_rules_href_exclude_paths<\/code> filter receives the current mode (either \u201cprefetch\u201d or \u201cprerender\u201d) to provide conditional exclusions.<\/p>\n<p>The following example ensures that URLs like <code>https:\/\/example.com\/products\/...<\/code> cannot be prerendered, while still allowing them to be prefetched:<\/p>\n<pre><code>&lt;?php\nadd_filter(\n    'plsr_speculation_rules_href_exclude_paths',\n    function ( array $exclude_paths, string $mode ): array {\n        if ( 'prerender' === $mode ) {\n            $exclude_paths[] = '\/products\/*';\n        }\n        return $exclude_paths;\n    },\n    10,\n    2\n);\n<\/code><\/pre>\n<p>As mentioned above, adding the <code>no-prerender<\/code> CSS class to a link will prevent it from being prerendered (but not prefetched). Additionally, links with <code>rel=nofollow<\/code> will neither be prefetched nor prerendered because some plugins add this to non-idempotent links (e.g. add to cart); such links ideally should rather be buttons which trigger a POST request or at least they should use <code>wp_nonce_url()<\/code>.<\/p>\n<\/dd>\n<dt id=\"are%20there%20any%20special%20considerations%20for%20speculative%20loading%20behavior%3F\">\n<h3>Are there any special considerations for speculative loading behavior?<\/h3>\n<\/dt>\n<dd>\n<p>For safety reasons, the entire speculative loading feature is disabled by default for logged-in users and for sites that do not use pretty permalinks. The latter is the case because plugins often use URLs with custom query parameters to let users perform actions, and such URLs should not be speculatively loaded. For sites without pretty permalinks, it is impossible or at least extremely complex to differentiate between which query parameters are Core defaults and which query parameters are custom.<\/p>\n<p>If you are running this plugin on a site without pretty permalinks and are confident that there are no custom query parameters in use that can cause state changes, you can opt in to enabling speculative loading via the <code>plsr_enabled_without_pretty_permalinks<\/code> filter:<\/p>\n<pre><code>&lt;?php\nadd_filter( 'plsr_enabled_without_pretty_permalinks', '__return_true' );\n<\/code><\/pre>\n<\/dd>\n<dt id=\"how%20will%20this%20impact%20analytics%20and%20personalization%3F\">\n<h3>How will this impact analytics and personalization?<\/h3>\n<\/dt>\n<dd>\n<p>Prerendering can affect analytics and personalization.<\/p>\n<p>For client-side JavaScript, is recommended to delay these until the prerender is activated (for example by clicking on the link). Some solutions (like Google Analytics) already do this automatically, see <a target=\"_blank\" href=\"https:\/\/developer.chrome.com\/docs\/web-platform\/prerender-pages#impact-on-analytics\" rel=\"nofollow ugc noopener\">Impact on Analytics<\/a>. Additionally, cross-origin iframes are not loaded until activation which can further avoid issues here.<\/p>\n<p>Speculating with the default <code>moderate<\/code> eagerness decreases the risk that the prerendered page will not be visited by the user and therefore will avoid any side effects of loading such a link in advance. In contrast, <code>eager<\/code> speculation increases the risk that prerendered pages may not be loaded. Alternatively, the plugin offers to only speculate on mouse\/pointer down (conservative) which reduces the risk even further and is an option for sites which are concerned about this, at the cost of having less of a lead time and so less of a performance gain.<\/p>\n<p>A prerendered page is linked to the page that prerenders it, so personalisation may already be known by this point and changes (e.g. browsing other products, or logging in\/out) often require a new page load, and hence a new prerender, which will then take these into account. But it definitely is something to be aware of and test! Prerendered pages can be canceled by removing the speculation rules <code>&lt;script&gt;<\/code> element from the page using standard JavaScript DOM APIs should this be needed when state changes without a new page load.<\/p>\n<\/dd>\n<dt id=\"where%20can%20i%20submit%20my%20plugin%20feedback%3F\">\n<h3>Where can I submit my plugin feedback?<\/h3>\n<\/dt>\n<dd>\n<p>Feedback is encouraged and much appreciated, especially since this plugin may contain future WordPress core features. If you have suggestions or requests for new features, you can <a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/issues\/new\/choose\" rel=\"nofollow ugc noopener\">submit them as an issue in the WordPress Performance Team\u2019s GitHub repository<\/a>. If you need help with troubleshooting or have a question about the plugin, please <a target=\"_blank\" href=\"https:\/\/wordpress.org\/support\/plugin\/speculation-rules\/#new-topic-0\" rel=\"ugc noopener\">create a new topic on our support forum<\/a>.<\/p>\n<\/dd>\n<dt id=\"where%20can%20i%20report%20security%20bugs%3F\">\n<h3>Where can I report security bugs?<\/h3>\n<\/dt>\n<dd>\n<p>The Performance team and WordPress community take security bugs seriously. We appreciate your efforts to responsibly disclose your findings, and will make every effort to acknowledge your contributions.<\/p>\n<p>To report a security issue, please visit the <a target=\"_blank\" href=\"https:\/\/hackerone.com\/wordpress\" rel=\"nofollow ugc noopener\">WordPress HackerOne<\/a> program.<\/p>\n<\/dd>\n<dt id=\"how%20can%20i%20contribute%20to%20the%20plugin%3F\">\n<h3>How can I contribute to the plugin?<\/h3>\n<\/dt>\n<dd>\n<p>Contributions are always welcome! Learn more about how to get involved in the <a target=\"_blank\" href=\"https:\/\/make.wordpress.org\/performance\/handbook\/get-involved\/\" rel=\"nofollow ugc noopener\">Core Performance Team Handbook<\/a>.<\/p>\n<\/dd>\n<\/dl>\n<\/div>\n<div id=\"tab-reviews\" class=\"plugin-reviews section\">\n<h2 id=\"reviews-header\">Reviews<\/h2>\n<div class=\"plugin-reviews\">\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/6ac7c2e9bb1e43d09d87b780c06c09b391a52680c3b1512bcd094176376a1a26?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/6ac7c2e9bb1e43d09d87b780c06c09b391a52680c3b1512bcd094176376a1a26?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/does-what-it-needs-to-do-50\/\" rel=\"noopener\">Does what it needs to do.<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/olliejones\/\" title=\"Posts by OllieJones\" rel=\"author noopener\">OllieJones<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">February 1, 2025<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">This works. That\u2019s good.<\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/b74336db946c8d8c3f811c4cdcdc350380f0a869db5674c41ab11151e3d3566c?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/b74336db946c8d8c3f811c4cdcdc350380f0a869db5674c41ab11151e3d3566c?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/very-fast-and-functional-thanks-for-this\/\" rel=\"noopener\">Very fast and functional \u2013 Thanks for this.<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/mrimpact\/\" title=\"Posts by mrimpact\" rel=\"author noopener\">mrimpact<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">August 9, 2024<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">We have done a lot of testing on WordPress sites and WooCommerce stores. Everything works beautifully and fast.<\/p>\n<p>Thank you very much for this amazing plugin.<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/39a932effeea71cd4f7f4ff167ea1cca1fd832db475adcc1225327e01ef91b2c?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/39a932effeea71cd4f7f4ff167ea1cca1fd832db475adcc1225327e01ef91b2c?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/seriously-impressive-2\/\" rel=\"noopener\">Seriously Impressive<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/groggy72\/\" title=\"Posts by groggy72\" rel=\"author noopener\">groggy72<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">July 19, 2024<\/span><br \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"review-replies\">1 reply<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">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<\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/4b04f3868d5d00557a0e117f43262a23de2b023b16cf33e18bf233ecce7e4515?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/4b04f3868d5d00557a0e117f43262a23de2b023b16cf33e18bf233ecce7e4515?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/interesting-and-impressive\/\" rel=\"noopener\">Interesting and Impressive<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/hudson-atwell\/\" title=\"Posts by Hudson Atwell\" rel=\"author noopener\">Hudson Atwell<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">June 4, 2024<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">Amazing results on install. Will continue to check this one out.<\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/80e914c33cfcb58bb025742ce294e1d12f214079d7e14ac31b35e24477c06eda?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/80e914c33cfcb58bb025742ce294e1d12f214079d7e14ac31b35e24477c06eda?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/ein-absolut-sinnvolles-plugin\/\" rel=\"noopener\">Ein absolut sinnvolles Plugin<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/lacoste89\/\" title=\"Posts by lacoste89\" rel=\"author noopener\">lacoste89<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">May 27, 2024<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">Es verk\u00fcrzt die Ladzeit f\u00fcr einen Benutzer sichtbar, auch wenn im Hintergrund die Seite gleichschnell geladen wird, so f\u00fchlt es sich f\u00fcr einen Benutzer extrem schnell an.<\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/50ce5a76b6b5281271e4ac9283279a63404450fd15647fd69896f5040898ec52?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/50ce5a76b6b5281271e4ac9283279a63404450fd15647fd69896f5040898ec52?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/excellent-performance-boost\/\" rel=\"noopener\">Excellent performance boost<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/jjcarlson\/\" title=\"Posts by jjcarlson\" rel=\"author noopener\">jjcarlson<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">May 8, 2024<\/span><br \/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"review-replies\">1 reply<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">I\u2019ve 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\u2019t tested the sites with Lighthouse, but honestly, I don\u2019t feel the need to do that, because it\u2019s about the user experience first, and that is such an improvement with this plugin. Thank you!<\/div>\n<\/p><\/div>\n<\/article><\/div>\n<p>\t\t<a target=\"_blank\" class=\"reviews-link\" href=\"https:\/\/wordpress.org\/support\/plugin\/speculation-rules\/reviews\/\" rel=\"noopener\"><br \/>\n\t\t\tRead all 17 reviews\t\t<\/a><\/div>\n<div id=\"tab-developers\" class=\"plugin-developers section\">\n<h2 id=\"developers-header\">Contributors &amp; Developers<\/h2>\n<div class=\"plugin-contributors\">\n<p>\u201cSpeculative Loading\u201d is open source software. The following people have contributed to this plugin.<\/p>\n<p><span class=\"screen-reader-text\">Contributors<\/span><\/p>\n<ul id=\"contributors-list\" class=\"contributors-list\">\n<li>\n\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/178f40079143ff7464125e4fbc88e62024a16442920a6a3d6dfa3d7e626be20d?s=32&amp;d=mm&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/178f40079143ff7464125e4fbc88e62024a16442920a6a3d6dfa3d7e626be20d?s=64&amp;d=mm&amp;r=g 2x\" class=\"avatar avatar-32 photo\" height=\"32\" width=\"32\">\t\t\t\t<a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/wordpressdotorg\/\" rel=\"noopener\"><br \/>\n\t\t\t\t\tWordPress.org\t\t\t\t<\/a>\n\t\t\t<\/li>\n<\/ul><\/div>\n<div class=\"plugin-development\">\n<p>\u201cSpeculative Loading\u201d has been translated into 9 locales. Thank you to <a target=\"_blank\" href=\"https:\/\/translate.wordpress.org\/projects\/wp-plugins\/speculation-rules\/contributors\" rel=\"noopener\">the translators<\/a> for their contributions.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/translate.wordpress.org\/projects\/wp-plugins\/speculation-rules\" rel=\"noopener\">Translate \u201cSpeculative Loading\u201d into your language.<\/a><\/p>\n<h3>Interested in development?<\/h3>\n<p><a target=\"_blank\" href=\"https:\/\/plugins.trac.wordpress.org\/browser\/speculation-rules\/\" rel=\"noopener\" class=\"broken_link\">Browse the code<\/a>, check out the <a target=\"_blank\" href=\"https:\/\/plugins.svn.wordpress.org\/speculation-rules\/\" rel=\"noopener\">SVN repository<\/a>, or subscribe to the <a target=\"_blank\" href=\"https:\/\/plugins.trac.wordpress.org\/log\/speculation-rules\/\" rel=\"noopener\" class=\"broken_link\">development log<\/a> by <a target=\"_blank\" href=\"https:\/\/plugins.trac.wordpress.org\/log\/speculation-rules\/?limit=100&amp;mode=stop_on_copy&amp;format=rss\" rel=\"noopener\" class=\"broken_link\">RSS<\/a>.<\/p>\n<\/div>\n<\/div>\n<div id=\"tab-changelog\" class=\"plugin-changelog section\">\n<h2 id=\"changelog-header\">Changelog<\/h2>\n<h4>1.4.0<\/h4>\n<p><strong>Enhancements<\/strong><\/p>\n<ul>\n<li>Implement speculative loading considerations for safer behavior. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/1784\" rel=\"nofollow ugc noopener\">1784<\/a>)<\/li>\n<\/ul>\n<h4>1.3.1<\/h4>\n<p><strong>Bug Fixes<\/strong><\/p>\n<ul>\n<li>Check if rel contains nofollow instead of being just nofollow when excluding speculative loading. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/1232\" rel=\"nofollow ugc noopener\">1232<\/a>)<\/li>\n<\/ul>\n<h4>1.3.0<\/h4>\n<p><strong>Enhancements<\/strong><\/p>\n<ul>\n<li>Prevent speculatively loading links to the uploads, content, plugins, template, or stylesheet directories. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/1167\" rel=\"nofollow ugc noopener\">1167<\/a>)<\/li>\n<li>Facilitate embedding Speculative Loading in other plugins\/themes. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/1159\" rel=\"nofollow ugc noopener\">1159<\/a>)<\/li>\n<li>Improve overall code quality with stricter static analysis checks. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/issues\/775\" rel=\"nofollow ugc noopener\">775<\/a>)<\/li>\n<li>Bump minimum PHP requirement to 7.2. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/1130\" rel=\"nofollow ugc noopener\">1130<\/a>)<\/li>\n<\/ul>\n<h4>1.2.2<\/h4>\n<p><strong>Bug Fixes<\/strong><\/p>\n<ul>\n<li>Fix composition of href exclude paths to account for JSON encoding and differing site\/home URLs. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/1164\" rel=\"nofollow ugc noopener\">1164<\/a>)<\/li>\n<\/ul>\n<p><strong>Documentation<\/strong><\/p>\n<ul>\n<li>Update readme with browser support and FAQ section about analytics and personalization. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/1155\" rel=\"nofollow ugc noopener\">1155<\/a>)<\/li>\n<\/ul>\n<h4>1.2.1<\/h4>\n<p><strong>Enhancements<\/strong><\/p>\n<ul>\n<li>Add settings link to Speculative Loading plugin action links. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/1145\" rel=\"nofollow ugc noopener\">1145<\/a>)<\/li>\n<li>Bump minimum PHP version to 7.2. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/1130\" rel=\"nofollow ugc noopener\">1130<\/a>)<\/li>\n<\/ul>\n<p><strong>Bug Fixes<\/strong><\/p>\n<ul>\n<li>Exclude _wpnonce URLs in speculation rules. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/1143\" rel=\"nofollow ugc noopener\">1143<\/a>)<\/li>\n<li>Exclude rel=nofollow links from prefetch\/prerender. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/1142\" rel=\"nofollow ugc noopener\">1142<\/a>)<\/li>\n<\/ul>\n<h4>1.2.0<\/h4>\n<ul>\n<li>Add missing uninstall.php to remove plugin\u2019s database option. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/1128\" rel=\"nofollow ugc noopener\">1128<\/a>)<\/li>\n<\/ul>\n<h4>1.1.0<\/h4>\n<ul>\n<li>Allow excluding URL patterns from prerendering or prefetching specifically. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/1025\" rel=\"nofollow ugc noopener\">1025<\/a>)<\/li>\n<li>Rename plugin to \u201cSpeculative Loading\u201d. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/1101\" rel=\"nofollow ugc noopener\">1101<\/a>)<\/li>\n<li>Add Speculative Loading generator tag. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/1102\" rel=\"nofollow ugc noopener\">1102<\/a>)<\/li>\n<li>Bump minimum required WP version to 6.4. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/1062\" rel=\"nofollow ugc noopener\">1062<\/a>)<\/li>\n<li>Update tested WordPress version to 6.5. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/1027\" rel=\"nofollow ugc noopener\">1027<\/a>)<\/li>\n<\/ul>\n<h4>1.0.1<\/h4>\n<ul>\n<li>Escape path prefix and restrict it to be a pathname in Speculation Rules. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/951\" rel=\"nofollow ugc noopener\">951<\/a>)<\/li>\n<li>Force HTML5 script theme support when printing JSON script. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/952\" rel=\"nofollow ugc noopener\">952<\/a>)<\/li>\n<li>Add icon and banner assets for plugin directory. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/987\" rel=\"nofollow ugc noopener\">987<\/a>)<\/li>\n<\/ul>\n<h4>1.0.0<\/h4>\n<ul>\n<li>Initial release of the Speculative Loading plugin as a standalone plugin. (<a target=\"_blank\" href=\"https:\/\/github.com\/WordPress\/performance\/pull\/733\" rel=\"nofollow ugc noopener\">733<\/a>)<\/li>\n<\/ul>\n<\/div><\/div>\n<p><!-- .entry-content --><\/p>\n<p>\t<!-- .entry-meta --><br \/>\n<\/article>\n<p><br \/>\n<br \/><a href=\"https:\/\/wordpress.org\/plugins\/speculation-rules\/\" target=\"_blank\" rel=\"noopener\">Source link <\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Speculative Loading By performanceteam Download Details Reviews Installation Development Support Description This plugin adds support for the Speculation Rules API, which allows defining rules by which certain URLs are dynamically prefetched or prerendered. See the Speculation Rules WICG specification draft. By default, the plugin is configured to prerender WordPress frontend URLs when the user interacts [&hellip;]<\/p>","protected":false},"author":6,"featured_media":3238,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"give_campaign_id":0,"footnotes":""},"categories":[1933,39,40],"tags":[2197,2196],"class_list":["post-3237","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-community-plugin","category-lite-version","category-wp-plugin-solution","tag-loading","tag-speculative"],"acf":[],"fifu_image_url":"https:\/\/ps.w.org\/speculation-rules\/assets\/banner-772x250.png?rev=3098224","_links":{"self":[{"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/posts\/3237","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/comments?post=3237"}],"version-history":[{"count":0,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/posts\/3237\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/media\/3238"}],"wp:attachment":[{"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/media?parent=3237"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/categories?post=3237"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/tags?post=3237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}