You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/docs/workers/static-assets/binding.mdx
+19-4Lines changed: 19 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,6 +17,8 @@ import {
17
17
Tabs,
18
18
} from"~/components";
19
19
20
+
import { WranglerConfig } from"~/components";
21
+
20
22
Configuring a Worker with assets requires specifying a [directory](/workers/static-assets/binding/#directory) and, optionally, an [assets binding](/workers/static-assets/binding/), in your Worker's `wrangler.toml` file. The [assets binding](/workers/static-assets/binding/) allows you to dynamically fetch assets from within your Worker script (e.g. `env.ASSETS.fetch()`), similarly to how you might with a make a `fetch()` call with a [Service binding](/workers/runtime-apis/bindings/service-bindings/http/).
21
23
22
24
Only one collection of static assets can be configured in each Worker.
@@ -25,8 +27,6 @@ Only one collection of static assets can be configured in each Worker.
25
27
26
28
The folder of static assets to be served. For many frameworks, this is the `./public/`, `./dist/`, or `./build/` folder.
Configuring the optional [binding](/workers/runtime-apis/bindings) gives you access to the collection of assets from within your Worker script.
42
+
Controls whether assets will be served first on a matching request. `serve_directly = true` ([default](/workers/static-assets/routing/#default-behavior)) will serve any static asset matching a request, while `serve_directly = false` will unconditionally [invoke your Worker script](/workers/static-assets/routing/#invoking-worker-script-ahead-of-assets).
43
43
44
+
<WranglerConfig>
44
45
46
+
```toml title="wrangler.toml"
47
+
name = "my-worker"
48
+
compatibility_date = "2024-09-19"
49
+
main = "src/index.ts"
50
+
# The following configuration unconditionally invokes the Worker script at
51
+
# `src/index.ts`, which can programatically fetch assets via the ASSETS binding
Copy file name to clipboardExpand all lines: src/content/docs/workers/static-assets/compatibility-matrix.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -85,7 +85,7 @@ We plan to bridge the gaps between Workers and Pages and provide ways to migrate
85
85
86
86
[^2]: Similar to <sup>3</sup>, to customize the HTTP headers that are returned by static assets, you can use [Service bindings](/workers/runtime-apis/bindings/service-bindings/) to connect a Worker in front of the Worker with assets.
87
87
88
-
[^3]: If you need to run a Worker before serving static assets, you can create a separate Worker that acts as middleware, and then use [Service bindings](/workers/runtime-apis/bindings/service-bindings/) to forward the request to the Worker with assets. We plan to explore additional configuration to support more complex routing in the future.
88
+
[^3]: Middleware can be configured by configuring the `[serve_directly](/workers/static-assets/binding/#serve_directly)` option, but is charged as a normal Worker invocation. We plan to explore options for free middleware in the future.
89
89
90
90
[^4]: You can handle redirects by adding code to your Worker (a [community package](https://npmjs.com/package/redirects-in-workers) is available for `_redirects` support), or you can use [Bulk Redirects](/rules/url-forwarding/bulk-redirects/).
Copy file name to clipboardExpand all lines: src/content/docs/workers/static-assets/routing.mdx
+57-3Lines changed: 57 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,7 +17,11 @@ import {
17
17
Tabs,
18
18
} from"~/components";
19
19
20
-
Assets are served by attempting to match up the incoming request's pathname to a static asset. The structure and organization of files in your static asset directory, along with any routing configuration, determine the routing paths for your application. When a request invokes a Worker with assets:
20
+
import { WranglerConfig } from"~/components";
21
+
22
+
## Default behavior
23
+
24
+
By default, assets are served by attempting to match up the incoming request's pathname to a static asset. The structure and organization of files in your static asset directory, along with any routing configuration, determine the routing paths for your application. When a request invokes a Worker with assets:
21
25
22
26
1. If a request is found with a matching path to the current route requested then that asset will always be served.
23
27
@@ -33,6 +37,58 @@ In this example, request to `example.com/api` doesn't match a static asset so th
33
37
34
38

35
39
40
+
## Invoking Worker Script Ahead of Assets
41
+
42
+
Users may desire to run code before assets are served, much like [middleware in Pages](/pages/functions/middleware/). [`serve_directly`](/workers/static-assets/binding/#serve_directly) is provided as a configuration within wrangler.toml. When disabled, this option forces a user script to be invoked regardless of a request matching an asset.
43
+
44
+
Take the following directory structure, wrangler.toml, and user Worker code:
In this example, any request will be routed to our user Worker, due to `serve_directly` being disabled. As a result, any request being made `/supersecret.html` without an `Authorization` header will result in a 403.
91
+
36
92
## Routing configuration
37
93
38
94
There are two options for asset serving that can be [configured in `wrangler.toml`](/workers/wrangler/configuration/#assets):
@@ -99,8 +155,6 @@ Alternate configuration options are outlined on this page and can be specified i
Copy file name to clipboardExpand all lines: src/content/docs/workers/wrangler/configuration.mdx
+5-1Lines changed: 5 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -981,6 +981,10 @@ The following options are available under the `assets` key.
981
981
982
982
- The binding name used to refer to the assets. Optional, and only useful when a Worker script is set with `main`.
983
983
984
+
-`serve_directly` <Typetext="boolean" /> <MetaInfotext="optional, defaults to true" />
985
+
986
+
- Controls whether static assets are fetched directly, or a Worker script is invoked. Learn more about fetching assets when using [`serve_directly`](/workers/static-assets/routing/#invoking-worker-script-ahead-of-assets).
- Determines the redirects and rewrites of requests for HTML content. Learn more about the various options in [assets routing](/workers/static-assets/routing/#html_handling).
@@ -1191,7 +1195,7 @@ upload_source_maps = true
1191
1195
1192
1196
## Workers Sites
1193
1197
1194
-
<Renderfile="workers_sites"/>
1198
+
<Renderfile="workers_sites"/>
1195
1199
1196
1200
[Workers Sites](/workers/configuration/sites/) allows you to host static websites, or dynamic websites using frameworks like Vue or React, on Workers.
0 commit comments