[wp-trac] [WordPress Trac] #64066: Speculative Loading: Change default eagerness from conservative to moderate when page cache is detected

WordPress Trac noreply at wordpress.org
Thu Oct 2 02:40:22 UTC 2025


#64066: Speculative Loading: Change default eagerness from conservative to moderate
when page cache is detected
-----------------------------------------+-----------------------------
 Reporter:  westonruter                  |      Owner:  (none)
     Type:  enhancement                  |     Status:  new
 Priority:  normal                       |  Milestone:  Awaiting Review
Component:  General                      |    Version:  6.8
 Severity:  normal                       |   Keywords:  2nd-opinion
  Focuses:  performance, sustainability  |
-----------------------------------------+-----------------------------
 This is a follow up to #62503 which introduced Speculative Loading (the
 Speculation Rules API) to core.

 As described in the [https://make.wordpress.org/core/2025/03/06
 /speculative-loading-in-6-8/ Speculative Loading in 6.8] dev note:

 > This default of `prefetch` with `conservative` eagerness is used as a
 reasonable starting point to enable speculative loading at the scale of
 WordPress. It is in line with the configuration that Cloudflare uses in
 its speculative loading feature, and it minimizes the chance of any
 speculative loads without a subsequent navigation to the URL.

 The default `prefetch` and `mode` in core are set to `auto`:

 > For both configuration parameters, the value `auto` signifies that
 WordPress Core will decide on the configuration, which as of today
 effectively leads to a mode of `prefetch` and an `eagerness` of
 `conservative`. Depending on various criteria such as the state of the
 Speculation Rules API and ecosystem support, the behavior may change in a
 future WordPress release.

 In the Speculation Rules API, the `eagerness` of `conservative` means that
 the browser will only start to prefetch the URL when the user starts to
 click/tap on a link (i.e. `mousedown`/`pointerdown`). This gives the
 navigation about a 50 millisecond head start versus waiting for the
 `click` event to finish. With the `eagerness` of `moderate`, however, the
 browser can start to prefetch the URL after the user has hovered over a
 link for 200 ms on desktop, or (newly) on mobile when a link is visible in
 the viewport along with some additional heuristics. See Chrome's
 [https://docs.google.com/document/d/1YPbtUPfZIDElzBZNx8IQMzRFvy8oauLG_i1XIr6jgTs/edit?usp=sharing
 Speculation rules eagerness improvements]. I did a
 [https://weston.ruter.net/2025/08/27/the-site-speed-frontier-with-
 performance-lab-and-beyond/#speculative-loading comparison] on the impact
 that the different eagerness levels have on a WordPress site with a normal
 TTFB (for a WP site) of 1 second: While `conservative` shaves off 50 ms
 from that 1-second TTFB, an `eagerness` of `moderate` can reduce the
 perceived TTFB to zero milliseconds.

 Nevertheless, a key reason for being `conservative` is to minimize the
 chance of unused speculative loads. This is to guard against the increased
 server load, while also being a sustainability concern. On many shared
 hosts, the additional traffic incurred by `moderate` may overtax their
 limited CPU resources. Nevertheless, this is also an issue when such a
 site sees an influx in visitors. In order to deal with such traffic
 spikes, the go-to solution is to use a [https://developer.wordpress.org
 /advanced-administration/performance/optimization/#caching page caching]
 solution. In fact, WordPress 6.1 introduced a Site Health test via #56041
 which specifically checks for the presence of a page cache.

 As noted in the dev note that the default `eagerness` “may change in a
 future WordPress release”, I'm proposing that the Site Health test for
 page cache could be leveraged as a signal to change the default
 `eagerness` from `conservative` to `moderate`.

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/64066>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list