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