HomeGuidesAPI Reference
Submit Documentation FeedbackJoin Developer CommunityOptimizely GitHubOptimizely NuGetLog In


## Cloudflare Workers

Cloudflare Workers provides a serverless execution environment that allows you to create new applications or augment existing ones without configuring or maintaining infrastructure.

### Advantages of Cloudflare Workers

  • **Automatic scaling** – Traffic is automatically routed and load balanced across servers.

  • **High-performance global network** – Your code is powered by Cloudflare's global network.

  • **Multiple programming languages** – You can write in JavaScript, Rust, C and C++

  • **No cold starts** – Cloudflare supports 0ms cold starts.

Note

Although you can write [Cloudflare Workers code in various languages](🔗), Optimizely currently only provides a template for JavaScript.

### Cloudflare Workers use cases

For example use cases of Cloudflare Workers, check out their [documentation with various examples](🔗).

### Restrictions and Limitations

Cloudflare Workers have different plan limits and restrictions based on your account. Please refer to the official Cloudflare [Limit documentation](🔗) for more information.

The Optimizely worker template for Cloudflare worker embeds and extends our [JavaScript SDK](🔗) to provide a starting point for you to implement experimentation and feature flagging for your experiences at the edge. For a guide to getting started with our platform more generally, this can be combined with the steps outlined in our [JavaScript Quickstart](🔗).

## Optimizely + Cloudflare Worker Template

The Optimizely Cloudflare Workers template embeds and extends our [Javascript Node SDK](🔗) to provide a starting point for you to implement experimentation and feature flagging for your experiences at the edge. For a guide to getting started with our platform more generally, this can be combined with the steps outlined in our [Javascript Quickstart](🔗).

### Caching with Cloudflare

This template uses Cloudflare cache API to provide performant caching for the [Optimizely Datafile](🔗).

### Identity Management

Out of the box, Optimizely's Full Stack SDKs require a user-provided identifier to be passed in at runtime to drive experiment and feature flag decisions. This example generates a unique id, stores it in a cookie and reuses it to make the decisions sticky. Alternatively, you can use an existing unique identifier available within your application and pass it in as the value for the `OPTIMIZELY_USER_ID` cookie.

### Bucketing

For more information on how Optimizely Full Stack SDKs assign users to feature flags and experiments, see [the documentation on how bucketing works](🔗).

## How to use

### Prerequisites

You will need to have these prerequisites to use this template:

  • Install the [Wrangler CLI](🔗).

### Get started

  1. Generate a project using the [template hosted on GitHub](🔗):





  1. Add `account_id` in `wrangler.toml`. If you do not know the account ID, just do `wrangler dev` and the CLI will prompt you with the account ID and the instructions to add it.

  2. Install node nodules.





  1. Update your Optimizely `sdkKey`, `flagKey` and `userId` in `src/index.js`. Your SDK keys can be found in the Optimizely application under **Settings**.

  2. Test and debug the worker locally:





  1. Deploy the worker on Cloudflare:





  1. Tail the logs for debugging when accessing worker deployed on Cloudflare (optional):





## Additional resources

  • [Cloudflare Workers](🔗)

  • [Cloudflare Workers documentation](🔗)

  • [Cloudflare Workers tutorials](🔗)

  • [Cloudflare Workers with Optimizely Template on GitHub](🔗)