昨晚我写了我的第一个IHttpModule
请求处理。我正在使用正则表达式来检查原始 url。将IHttpModule
在每个请求上调用,因此对正则表达式对象进行某种缓存以防止在每个请求上创建它似乎是合理的。
现在我的问题......什么更好:使用HttpContext.Current.Cache
存储实例化的对象或private static Regex
在我的模块中使用?
我很期待原因。只是为了澄清:正则表达式永远不会改变,因此总是一样的。
昨晚我写了我的第一个IHttpModule
请求处理。我正在使用正则表达式来检查原始 url。将IHttpModule
在每个请求上调用,因此对正则表达式对象进行某种缓存以防止在每个请求上创建它似乎是合理的。
现在我的问题......什么更好:使用HttpContext.Current.Cache
存储实例化的对象或private static Regex
在我的模块中使用?
我很期待原因。只是为了澄清:正则表达式永远不会改变,因此总是一样的。
如果正则表达式不会改变(通常不会),那么:
private static readonly Regex pattern = new Regex("...", RegexOptions.Compiled);
在各方面都是最快和最有效的
我想这取决于。内置缓存可以为您提供自动过期控制,而静态对象则不能。此外,如果您想更改缓存机制(假设您必须分发您的应用程序),您可以使用内置缓存。静态对象就是它,静态的。
当您需要更多地控制对象的生命周期时,我通常会使用静态字段并保存缓存。以下是我能想到的两个原因:
您应该问自己是否需要通过缓存对象获得的功能,即生命周期。