mirror of
https://github.com/caddyserver/website.git
synced 2025-04-22 13:06:16 -04:00
67 lines
1.9 KiB
Markdown
67 lines
1.9 KiB
Markdown
![]() |
---
|
||
|
title: push (Caddyfile directive)
|
||
|
---
|
||
|
|
||
|
# push
|
||
|
|
||
|
Configures the server to pre-emptively send resources to the client using HTTP/2 server push.
|
||
|
|
||
|
Resources can be linked for server push by specifying the Link header(s) of the response. This directive will automatically push resources described by upstream Link headers in these formats:
|
||
|
|
||
|
- `<resource>; as=script`
|
||
|
- `<resource>; as=script,<resource>; as=style`
|
||
|
- `<resource>; nopush`
|
||
|
- `<resource>;<resource2>;...`
|
||
|
|
||
|
where `<resource>` begins with a forward slash `/` (i.e. is a URI path with the same host). Only same-host resources can be pushed. If a linked resource is external or if it has the `nopush` attribute, it will not be pushed.
|
||
|
|
||
|
By default, push requests will include some headers deemed safe to copy from the original request:
|
||
|
|
||
|
- Accept-Encoding
|
||
|
- Accept-Language
|
||
|
- Accept
|
||
|
- Cache-Control
|
||
|
- User-Agent
|
||
|
|
||
|
as it is assumed many requests would fail without these headers; these do not need to be configured manually.
|
||
|
|
||
|
Push requests are virtualized internally, so they are very lightweight.
|
||
|
|
||
|
|
||
|
## Syntax
|
||
|
|
||
|
```caddy-d
|
||
|
push [<matcher>] [<resource>] {
|
||
|
[GET|HEAD] <resource>
|
||
|
headers {
|
||
|
[+]<field> [<value|regexp> [<replacement>]]
|
||
|
-<field>
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
- **<resource>** is the target URI path to push. If used within the block, may optionally be preceeded by the method (GET or POST; GET is default).
|
||
|
- **<headers>** manipulates the headers of the push request using the same syntax as the [`header` directive](/docs/caddyfile/directives/header). Some headers are carried over by default and do not need to be explicitly configured (see above).
|
||
|
|
||
|
|
||
|
|
||
|
## Examples
|
||
|
|
||
|
Push any resources described by `Link` headers in the response:
|
||
|
|
||
|
```caddy-d
|
||
|
push
|
||
|
```
|
||
|
|
||
|
Same, but also push `/resources/style.css` for all requests:
|
||
|
|
||
|
```caddy-d
|
||
|
push * /resources/style.css
|
||
|
```
|
||
|
|
||
|
Push `/foo.jpg` only when `/foo.html` is requested by the client:
|
||
|
|
||
|
```caddy-d
|
||
|
push /foo.html /foo.jpg
|
||
|
```
|