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
@@ -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 via the [`serve_directly`](/workers/static-assets/binding/#serve_directly) option, but is charged as a normal Worker invocation. We plan to explore additional related options 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
+83-19Lines changed: 83 additions & 19 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,62 @@ 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 wish to run code before assets are served. This is often the case when implementing authentication, logging, personalization, internationalization, or other similar functions. [`serve_directly`](/workers/static-assets/binding/#serve_directly) is a configuration option available in `wrangler.toml` which controls this behavior. When disabled, `serve_directly = false` will invoke the Worker script regardless of any assets that would have otherwise matched.
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.txt` without an `Authorization` header will result in a 403.
95
+
36
96
## Routing configuration
37
97
38
98
There are two options for asset serving that can be [configured in `wrangler.toml`](/workers/wrangler/configuration/#assets):
@@ -61,11 +121,13 @@ If you have custom 404 HTML pages, and configure `not_found_handling` to `"404-p
61
121
62
122
Take the following directory structure:
63
123
64
-
```
65
-
|---- file.html
66
-
|---- folder
67
-
|___ index.html
68
-
```
124
+
<FileTree>
125
+
126
+
- file.html
127
+
- folder
128
+
- index.html
129
+
130
+
</FileTree>
69
131
70
132
Based on the incoming requests, the following assets would be served:
71
133
@@ -99,8 +161,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
+4Lines changed: 4 additions & 0 deletions
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).
0 commit comments