> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kasoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# arc:cache

> 将脚本或模板的输出缓存到文件或内存中，支持基于优先级和基于时间的缓存策略。

export const siteNameShort = "知行之桥";

arc:cache 关键字允许用户缓存脚本或模板的输出。缓存有助于限制资源密集型脚本的执行，这些脚本的输出不会改变。可以在指定的时间内将输出缓存到文件中，也可以将输出缓存到内存中，也可以使用基于优先级或基于时间的缓存。

## 参数

* **file**：输出缓存到的文件的名称。要缓存到文件，还必须指定 **duration** 或 **dependency** 参数。要为不同的输入参数值缓存不同版本的输出，请在文件名中包含参数值。
* **key**：用于将脚本输出存储在内存缓存中的键。要缓存在内存中，必须指定此参数。与 **file** 参数一样，您可以使用脚本变量来区分缓存对象。
* **duration**：指定的间隔时间（分钟）。可用于缓存固定的时间，然后刷新缓存在内存中的对象或文件的内容。
* **priority**：缓存到内存中时使用的优先级。只有当 key 被指定，priority 参数才是有效的。priority 的有效值有 Low，BelowNormal，Normal，AboveNormal，High 和 NotRemovable。
* **update**：arc:cache 语句是否在调用时刷新缓存，默认为 false。
* **format**：缓存的文件格式：SQLite 还是 RSS。默认为 RSS。
* **table**：SQLite 数据库中缓存输出的表。
* **dependency**：与 ASP.NET 缓存依赖的映射。当指定的文件改变，缓存中的对象会被删除。此文件或目录映射到 System.Web.Caching.CacheDependency（文件或目录）。

## 控制属性

无

## 示例

为每一个客户类型创建一个 .xml 文件。`tofilename` 格式化器用来确保生成的结果可以用作文件名称：

```xml theme={null}
<arc:cache duration="10" file="cache_[customer_type |tofilename].xml"/>
```

将 customer\_type 记录缓存到内存中，而不是缓存到文件中：

```xml theme={null}
<arc:cache priority="Normal" key="cache_[customer_type]"/>
```

为请求中每个指定的状态创建一个新的缓存对象：

```xml theme={null}
<arc:cache key="cache_[_request.state]"/>
```
