如果在整个网站上将标记设置为true
,则必须显示多个部分视图。
我在appSettings
文件的web.config
内部对该标记进行了硬编码,效果很好。但现在必须通过我们的后端设置此标志。
该网站有很多流量,我需要一个正确的方法来达到这个目标,我觉得只是为了检查这个标志是一个过度杀毒的SQL请求。
我虽然读过一个包含该标志的简单txt文件,但我不知道它是否仍然过多"。
最优化的方式是什么?
答案 0 :(得分:3)
结帐MemoryCache
。您可以创建一个带有静态属性的基本静态类来返回缓存的标志值,然后您可以将绝对到期定义为您可以使用的任何舒适级别(5秒或60分钟或任何时间跨度),您可以在其上更新缓存中的值。
这是处理线程的一个非常快速的例子。
public static class CacheStore
{
private static readonly string _keyMySharedFlag = "shared.flag";
private static readonly object _lockMySharedFlag = new object();
public static bool MySharedFlag
{
get
{
var cachedFlag = (bool?)MemoryCache.Default.Get(_keyMySharedFlag);
if (cachedFlag != null)
return cachedFlag.Value;
lock (_lockMySharedFlag)
{
// Confirm no other threads wrote to cache while we waited
cachedFlag = (bool?)MemoryCache.Default.Get(_keyMySharedFlag);
if (cachedFlag != null)
return cachedFlag.Value;
bool? newFlag = true; // Set to your database value
var cachePolicy = new CacheItemPolicy();
cachePolicy.AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(5); // 5 minutes
MemoryCache.Default.Set(_keyMySharedFlag, newFlag, cachePolicy);
return newFlag.Value;
}
}
}
}
答案 1 :(得分:0)
我建议定义一个全局配置类,其中包含所有标志,公共数据,并使用依赖注入将其注入到您需要的位置。这将导致我相信更可测试的解决方案。