简介
如果您还没有阅读过 ASP.NET Caching:Techniques and Best Practices,请阅读。本文主要以该文章的内容为基础,尤其是最佳实践。本文将描述 CacheConfig 类的内部组成,该帮助器类为 Microsoft ASP.NET 中的 Cache 对象提供包装。该类公开了一个非常简单的方法,用于完成 ASP.NET 应用程序内的大部分公共缓存工作。使用 CacheConfig类,可以通过翻转配置设置启用或禁用缓存,通过配置设置管理所有缓存项和其缓存持续时间,也可以只用一行代码,使用前面文章中描述的最佳实践技术来访问缓存。
配置
CacheConfig 从 web.config 文件读取其所有配置设置。指定的节和该节内的每个键值都使用缺省值定义为静态字符串,如代码示例 1 所示。
代码示例 1. 配置节和键名
protected static string cacheSettingsConfigName = "CacheSettings";
protected static string EnableCachingKey = "EnableCaching";
protected static string RequireKeyDefinitionInConfigKey =
"RequireKeyDefinitionInConfig";
protected static string DefaultCacheDurationUnitsKey =
"DefaultCacheDurationUnits";
protected static string DefaultCacheDurationValueKey =
"DefaultCacheDurationValue";
默认情况下,所有 CacheConfig 配置设置都存储在名为 "CacheSettings" 的自定义配置节中。该节被定义为简单的 NameValueCollection,就像内置的 AppSettings 配置节一样。必须把该新配置节定义在 web.config 中,如代码示例 2 所示。
代码示例 2. 在 web.config 中定义 CacheSettings 配置节
<configSections>
<section name="CacheSettings"
type="System.Configuration.NameValueFileSectionHandler, System,
Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
/>
</configSections>
<configSections> 元素必须是 web.config 配置元素中的第一个元素。
一旦该节在 web.config 中定义并添加适当的键,它将在应用程序中管理 CacheConfig 类的行为。代码示例 3 显示了示例 CacheSettings 节。
代码示例 3. CacheSettings 键和值
<CacheSettings>
<!-- true/false -->
<add key="EnableCaching" value="true" />
<!-- true/false -->
<add key="RequireKeyDefinitionInConfig" value="true" />
<!-- seconds, minutes, or hours -->
<add key="DefaultCacheDurationUnits" value="seconds" />
<!-- integer -->
<add key="DefaultCacheDurationValue" value="30" />
<!-- Cache Keys and Durations -
use "default" for value to use default otherwise integer. -->
<add key="AuthorsDataTable" value="default" />
<add key="AuthorsDataTableByState" value="10" />
</CacheSettings>
前四个键对 CacheConfig 的行为影响最大。最后几个键定义了所有对象的缓存键名和缓存持续时间,这些对象存储在使用 CacheConfig 的缓存中。表 1 描述了前几个配置值的效果。
表 1. 配置设置和它们的效果
设置 描述
EnableCaching
True/False。当它为 false 时, CacheConfig 被有效禁用,不会向缓存写项或从缓存读项。
RequireKeyDefinitionInConfig
True/False。当它为 true 时,如果为 CacheConfig 提供了一个键但在 web.config 中没有该键,将引发异常。
DefaultCacheDurationUnits
"seconds"、"minutes" 或 "hours"。为下一节指定的持续时间值定义单位。用作添