Skip to content

Commit

Permalink
Move volatile-cache to workerd
Browse files Browse the repository at this point in the history
  • Loading branch information
jasnell committed Feb 13, 2024
1 parent b3ed665 commit c3d4118
Show file tree
Hide file tree
Showing 12 changed files with 1,047 additions and 11 deletions.
28 changes: 28 additions & 0 deletions samples/volatile-cache/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Volatile-Cache Example

To run the example on http://localhost:8080

```sh
$ ./workerd serve config.capnp
```

To run using bazel

```sh
$ bazel run //src/workerd/server:workerd -- serve ~/cloudflare/workerd/samples/helloworld_esm/config.capnp
```

To create a standalone binary that can be run:

```sh
$ ./workerd compile config.capnp > helloworld

$ ./helloworld
```

To test:

```sh
% curl http://localhost:8080
Hello World
```
45 changes: 45 additions & 0 deletions samples/volatile-cache/config.capnp
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Imports the base schema for workerd configuration files.

# Refer to the comments in /src/workerd/server/workerd.capnp for more details.

using Workerd = import "/workerd/workerd.capnp";

# A constant of type Workerd.Config defines the top-level configuration for an
# instance of the workerd runtime. A single config file can contain multiple
# Workerd.Config definitions and must have at least one.
const helloWorldExample :Workerd.Config = (

# Every workerd instance consists of a set of named services. A worker, for instance,
# is a type of service. Other types of services can include external servers, the
# ability to talk to a network, or accessing a disk directory. Here we create a single
# worker service. The configuration details for the worker are defined below.
services = [ (name = "main", worker = .helloWorld) ],

# Each configuration defines the sockets on which the server will listen.
# Here, we create a single socket that will listen on localhost port 8080, and will
# dispatch to the "main" service that we defined above.
sockets = [ ( name = "http", address = "*:8080", http = (), service = "main" ) ]
);

# The definition of the actual helloWorld worker exposed using the "main" service.
# In this example the worker is implemented as an ESM module (see worker.js).
# The compatibilityDate is required. For more details on compatibility dates see:
# https://developers.cloudflare.com/workers/platform/compatibility-dates/

const helloWorld :Workerd.Worker = (
modules = [
(name = "worker", esModule = embed "worker.js")
],
compatibilityDate = "2023-02-28",

bindings = [
(name = "CACHE", volatileCache = (
id = "abc123",
limits = (
maxKeys = 10,
maxValueSize = 1024,
maxTotalValueSize = 1024,
),
))
],
);
16 changes: 16 additions & 0 deletions samples/volatile-cache/worker.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Copyright (c) 2017-2023 Cloudflare, Inc.
// Licensed under the Apache 2.0 license found in the LICENSE file or at:
// https://opensource.org/licenses/Apache-2.0

export default {
async fetch(req, env) {
const cached = await env.CACHE.read("hello", async (key) => {
return {
value: 'World',
expiration: Date.now() + 10000,
};
});

return new Response(`Hello ${cached}\n`);
}
};
Loading

0 comments on commit c3d4118

Please sign in to comment.