> [!CAUTION]
> **Caution:** This documentation covers Edge for Private Cloud 4.50.00, which is no longer supported. Google does not provide security patches, bug fixes, or technical support for this version. The current supported version is 4.54.00. See the [Edge for Private Cloud documentation](https://docs.apigee.com/private-cloud/latest/overview) for the current version, or [All versions](https://docs.apigee.com/private-cloud/versions) to compare releases.

Apigee Edge provides caching for persistence of data
across requests. When API data is received, it is stored in cache for a brief period of time
and then deleted. The maximum amount of time a piece of data is kept before being deleted
is called the *expiry* , or *time-to-live* (TTL), of the cache.
Each cache has a default TTL, but in some cases you may need to change the TTL value
to improve API performance.

## Types of cache

API data is stored in two types of cache:

- Level 1 (L1): In-memory cache, which has faster access but less available storage capacity.
- Level 2 (L2): Persistent cache in a Cassandra data store, which has slower access but more available storage capacity.

When a data entry in L1 cache reaches the L1 TTL, it is deleted. However, a
copy of the entry is kept in the L2 cache (which has a longer TTL than L1 cache),
where it remains accessible to other message processors.
See [In-memory and
persistent cache levels](https://docs.apigee.com/api-platform/cache/cache-internals#inmemoryandpersistentcachelevels) for more details about cache.

## Max L1 TTL

In Edge for Private Cloud, you can set the maximum L1 cache TTL for each message
processor using the Max L1 TTL property (`conf_cache_max.l1.ttl.in.seconds`).
An entry in the L1 cache will expire after reaching the Max L1 TTL value and be deleted.
**Note:** In Edge for Public Cloud, you can only set the TTL for L2 cache.

**Notes:**

- By default, Max L1 TTL is disabled (with the value `-1`), in which case the TTL of an entry in L1 cache is determined by the PopulateCache policy's [expiry settings](https://docs.apigee.com/api-platform/reference/policies/populate-cache-policy#ExpirySettingsElement) (for both L1 and L2 cache).
- Max L1 TTL only has an effect if its value is smaller than the overall cache expiry.

### Setting Max L1 TTL

You can set Max L1 TTL on a message processor as follows:

1. Open the [configuration file](https://docs.apigee.com/private-cloud/v4.50.00/how-configure-edge#editable-component-configuration-files) `/opt/apigee/customer/application/message-processor.properties` in an editor. If the file doesn't exist, create it.
2. Set the Max L1 TTL property to the desired value:

   ```
   conf_cache_max.l1.ttl.in.seconds = 180
   ```

   We recommend the value `180` seconds.
3. Make sure the properties file is owned by the "apigee" user:  

   ```
   chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
   ```
4. Restart the message processor:

   ```
   /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
   ```

## Guidelines for setting Max L1 TTL

When setting Max L1 TTL, keep the following guidelines in mind:

- **RPC misses:** If you are noticing remote procedure call (RPC) misses between message processors (MPs)--- especially across multiple data centers--- it's possible that the L1 cache has stale entries, which will remain stale until they are deleted from L1 cache. Setting Max L1 TTL to a lower value forces any stale entries to be removed, and replaced with fresh values from L2 cache, sooner.  
  **Solution:** Decrease `conf_cache_max.l1.ttl.in.seconds`.
- **Excessive load on Casandra:** When you set a value for Max L1 TTL, L1 cache entries will expire more often, leading to more L1 cache misses and more L2 cache hits. Since L2 cache will be hit more often, Cassandra will incur an increased load.  
  **Solution:** Increase `conf_cache_max.l1.ttl.in.seconds`

As a general rule, tune Max L1 TTL to a value that balances the frequency
of RPC misses between MPs with the potential load on Cassandra.

We recommend setting the value of `conf_cache_max.l1.ttl.in.seconds` to at least
`180` seconds (3 minutes) to keep processing running smoothly.