我应该 MemoryCache 一个静态对象吗?
Should I MemoryCache a static object?
我有一个静态 class,里面有一个静态列表。
public static class Translations {
public static List<string> Resources {get; set;}
}
那个List对MemoryCache有意义吗?或者通过静态已经保存在内存中,所有用户都使用相同的列表并且不需要内存缓存?
如果我们谈论进程内内存,那么 static
字段将与 MemoryCache.Default
中的任何内容具有完全相同的生命周期,但该字段将更直接,因此更快.然而,更大的问题是,如果您在分配列表 后更改列表的内容 ,则会出现竞争条件,因为多个线程可能同时查看数据(不好事物)。使用某种不可变集合(例如 ImmutableList<T>
)可能是个好主意,以避免出现任何复杂情况。
我有一个静态 class,里面有一个静态列表。
public static class Translations {
public static List<string> Resources {get; set;}
}
那个List对MemoryCache有意义吗?或者通过静态已经保存在内存中,所有用户都使用相同的列表并且不需要内存缓存?
如果我们谈论进程内内存,那么 static
字段将与 MemoryCache.Default
中的任何内容具有完全相同的生命周期,但该字段将更直接,因此更快.然而,更大的问题是,如果您在分配列表 后更改列表的内容 ,则会出现竞争条件,因为多个线程可能同时查看数据(不好事物)。使用某种不可变集合(例如 ImmutableList<T>
)可能是个好主意,以避免出现任何复杂情况。