New in Symfony 3.3: WebLink component
April 21, 2017 • Published by Javier Eguiluz
Warning: This post is about an unsupported Symfony version. Some of this information may be out of date. Read the most recent Symfony Docs.
Contributed by
Kévin Dunglas
in #22273.
A few weeks ago, we added support for asset preloading with HTTP/2 Push. The feedback was so enthusiastic that we decided to improve and expand this feature. In fact, we decided to create a whole new component for it: WebLink.
This new component manages links between resources, not only assets; advising browsers to preload and prefetch resources through HTTP and HTTP/2 pushes. The component implements these specifications: HTML5 Links, Preload, and Resource Hints
All these new features can be used via several Twig functions:
link()
, adds theLink
HTTP header;preload()
, preload resources (not only assets);dns_prefetch()
, resolves a resource origin as early as possible;preconnect()
, initiates a early connection to a resource (including DNS resolution, TCP handshake, and TLS negotiation);prefetch()
, indicates to the client that it should prefetch the given resource;prerender()
, indicates to the client that it should prerender the given resource.
Unlike the previous preloading feature, this component is not only useful for web assets. Being a standalone component means that it can also be used for example to replace resource embedding by HTTP/2 pushes in your APIs.
Help the Symfony project!
As with any Open-Source project, contributing code or documentation is the most common way to help, but we also have a wide range of sponsoring opportunities.
Comments are closed.
To ensure that comments stay relevant, they are closed for old posts.
framework:
web_link:
enabled: true
And then add the extension in services :
twig.extension.web_link:
class: Symfony\Bridge\Twig\Extension\WebLinkExtension
arguments: ["@request_stack"]
tags:
- { name: twig.extension }
Symfony\Bridge\Twig\Extension\WebLinkExtension:
arguments: ["@request_stack"]
tags:
- { name: twig.extension }
```
Symfony\Bridge\Twig\Extension\WebLinkExtension:
arguments: ["@request_stack"]
tags: ["twig.extension"]
```
Or even even better yet:
```
services:
autoconfigure: true
Symfony\Bridge\Twig\Extension\WebLinkExtension:
arguments: ["@request_stack"]
```
:D