[wp-trac] [WordPress Trac] #42438: Add support for preload links (similar to resource hints)
WordPress Trac
noreply at wordpress.org
Thu Jul 7 17:42:09 UTC 2022
#42438: Add support for preload links (similar to resource hints)
--------------------------------------+-------------------------
Reporter: nico23 | Owner: swissspidy
Type: defect (bug) | Status: assigned
Priority: normal | Milestone: 6.1
Component: Script Loader | Version: 4.9
Severity: normal | Resolution:
Keywords: has-patch has-unit-tests | Focuses:
--------------------------------------+-------------------------
Comment (by mihai2u):
Since it was questioned of what use-case is helpful here, I'm sharing the
examples which can be added to one of the twenty-X themes to use the new
API
Preloading the CSS for a web font which can be loaded in a non-render
blocking fashion (early discover and trigger the download, but don’t delay
the paint if slow)
{{{
<link rel="preload"
href="https://fonts.googleapis.com/css2?family=Gulzar&display=swap"
as="style">
<link href="https://fonts.googleapis.com/css2?family=Gulzar&display=swap"
rel="stylesheet" media="print" onload="this.media='all'">
}}}
Preloading responsively the first image in the content
[https://web.dev/preload-responsive-images/]
{{{
<link rel="preload" as="image" href="wolf.jpg" imagesrcset="wolf_400px.jpg
400w, wolf_800px.jpg 800w, wolf_1600px.jpg 1600w" imagesizes="50vw">
}}}
When the image lacks srcset/sizes, it defaults to not having those extra
attributes
{{{
<link rel="preload" as="image" href="important.png">
}}}
And when there's a high confidence that the image is above the fold for
all devices, there's an extra attribute
`fetchpriority="high"`
which can be used as such:
{{{
<link rel="preload" as="image" href="important.png" fetchpriority="high"
...>
}}}
[https://youtu.be/fWoI9DXmpdk?t=1205]
When an image is not present on particular breakpoints, the media
attribute comes into play here:
{{{
<link rel="preload" href="mydog" as="image" media="(min-width: 601px)"
...>
}}}
Preloading render blocking CSS defined in the head is also still useful,
especially in the circumstance of structured data appearing before the
stylesheet links, causing the early HTML bytes not to contain the
stylesheet, causing a late discovery.
Preloading a script is either
{{{
<link rel="preload" as="script" href="https://cdn.ampproject.org/v0.js">
}}}
or, for module JS
{{{
<link rel="modulepreload" href="dog.mjs">
}}}
Preloading fonts require the type attribute and the crossorigin to be
present, which should be hard-coded for as="font" types:
{{{
<link rel="preload" href="fonts/cicle_fina-webfont.woff2" as="font"
type="font/woff2" crossorigin>
}}}
I hope I've been exhaustive enough for real world common usages.
Many of these example use-cases can be added to the developer notes with
the specific PHP code and the required parameters as it gets
released/merged.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/42438#comment:39>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list