Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Caching 支持缓存的亚音速_Caching_Subsonic_Subsonic3 - Fatal编程技术网

Caching 支持缓存的亚音速

Caching 支持缓存的亚音速,caching,subsonic,subsonic3,Caching,Subsonic,Subsonic3,考虑到以下要求的项目 数据读取密集型应用 每次最多100个并发用户。应用程序具有非常高的流量 虽然数据量很大,但每天只修改一次 决定使用亚音速的原因是易于开发和在高流量环境下工作的潜力 虽然在亚音速3上还没有找到/解决一些问题 使用活动记录、存储库、Linq到SQL的层的类型 使用分页/排序存储过程(因为当使用分页和排序显示10000多行时,它们将比内置分页机制提供更好的性能。对吗??) 缓存,根据项目要求,很明显,需要大量使用缓存。但无法找到合适的解决方案,这将适用于亚音速。 我是否必须

考虑到以下要求的项目

  • 数据读取密集型应用
  • 每次最多100个并发用户。应用程序具有非常高的流量
  • 虽然数据量很大,但每天只修改一次
决定使用亚音速的原因是易于开发和在高流量环境下工作的潜力

虽然在亚音速3上还没有找到/解决一些问题

  • 使用活动记录、存储库、Linq到SQL的层的类型
  • 使用分页/排序存储过程(因为当使用分页和排序显示10000多行时,它们将比内置分页机制提供更好的性能。对吗??)
  • 缓存,根据项目要求,很明显,需要大量使用缓存。但无法找到合适的解决方案,这将适用于亚音速。 我是否必须为它创建单独的层,如果是,一个简短的例子将是有益的

我为亚音速2.x ActiveRecord编写了一个CacheUtil类。这是基于一些人在旧的亚音速论坛上发布的代码。(这是从上次删除论坛之前删除的论坛中删除的。这就是为什么软件论坛应该是永久性的。)下面是缓存查找方法的示例。你可以把它改编成ss3。还有INSERT、fetchall、delete、clear等。Rob Connery当时说缓存是有问题的,它是故意被排除在ss2之外的。通过使用HttpRuntime.Cache,我可以在web应用程序和服务之间同时共享缓存。我相信我可以做到这一点,因为它是一个小应用程序,总是在一台服务器上

public static RecordBase<T> Find<T, ListType>(object primaryKeyValue)
    where T: RecordBase<T>, new()
    where ListType: AbstractList<T, ListType>, new()
{
    string key = typeof(T).ToString();
    if(HttpRuntime.Cache[key] == null)
        FetchAll<T, ListType>();
    if(HttpRuntime.Cache[key] != null)
    {
        ListType collection = (ListType)HttpRuntime.Cache[key];
        foreach(T item in collection)
        {
            if(item.GetPrimaryKeyValue().Equals(primaryKeyValue))
                return item;
        }
    }
    return null;
}
公共静态记录库查找(对象primaryKeyValue)
其中T:RecordBase,new()
其中ListType:AbstractList,new()
{
字符串键=typeof(T).ToString();
if(HttpRuntime.Cache[key]==null)
FetchAll();
if(HttpRuntime.Cache[key]!=null)
{
ListType集合=(ListType)HttpRuntime.Cache[key];
foreach(集合中的T项)
{
if(item.GetPrimaryKeyValue().Equals(primaryKeyValue))
退货项目;
}
}
返回null;
}

我为亚音速2.x ActiveRecord编写了一个CacheUtil类。这是基于一些人在旧的亚音速论坛上发布的代码。(这是从上次删除论坛之前删除的论坛中删除的。这就是为什么软件论坛应该是永久性的。)下面是缓存查找方法的示例。你可以把它改编成ss3。还有INSERT、fetchall、delete、clear等。Rob Connery当时说缓存是有问题的,它是故意被排除在ss2之外的。通过使用HttpRuntime.Cache,我可以在web应用程序和服务之间同时共享缓存。我相信我可以做到这一点,因为它是一个小应用程序,总是在一台服务器上

public static RecordBase<T> Find<T, ListType>(object primaryKeyValue)
    where T: RecordBase<T>, new()
    where ListType: AbstractList<T, ListType>, new()
{
    string key = typeof(T).ToString();
    if(HttpRuntime.Cache[key] == null)
        FetchAll<T, ListType>();
    if(HttpRuntime.Cache[key] != null)
    {
        ListType collection = (ListType)HttpRuntime.Cache[key];
        foreach(T item in collection)
        {
            if(item.GetPrimaryKeyValue().Equals(primaryKeyValue))
                return item;
        }
    }
    return null;
}
公共静态记录库查找(对象primaryKeyValue)
其中T:RecordBase,new()
其中ListType:AbstractList,new()
{
字符串键=typeof(T).ToString();
if(HttpRuntime.Cache[key]==null)
FetchAll();
if(HttpRuntime.Cache[key]!=null)
{
ListType集合=(ListType)HttpRuntime.Cache[key];
foreach(集合中的T项)
{
if(item.GetPrimaryKeyValue().Equals(primaryKeyValue))
退货项目;
}
}
返回null;
}

I。它与3.x不是100%兼容,但概念是相同的。

I。它与3.x并非100%兼容,但概念是相同的。

我在这里给出了类似的回答。基本上,您需要一个CollectionCacheManager—然后,我在每个类型的顶部添加一个层,并将所有请求通过这个单独的缓存控制器,而这些控制器反过来使用1个collectioncachecontroller。在外层,我混合了纯亚音速,linq,任何符合当时要求的。亚音速的美妙之处在于它不应该妨碍你。至于存储过程性能,我想指出的是Codinghoror和Reevaulate的Jeff Atwoods文章。硬件和内存一样便宜,数据库则不然。就我个人而言,我保持数据库超级简单和轻量级,并更喜欢让我的Web服务器缓存内存中的所有内容。数据库服务器只做很少的工作,这是我喜欢的方式。添加一些额外的负载平衡web服务器并不像增加数据库吞吐量、集群或分片DB那样重要。SQL和存储过程的编写和维护也非常困难。拿着你本该花在这件事上的预算,而不是加强你的硬件。。。记住硬件非常便宜,优秀的开发人员则不然。祝你好运

我在这里也作了类似的回答。基本上,您需要一个CollectionCacheManager—然后,我在每个类型的顶部添加一个层,并将所有请求通过这个单独的缓存控制器,而这些控制器反过来使用1个collectioncachecontroller。在外层,我混合了纯亚音速,linq,任何符合当时要求的。亚音速的美妙之处在于它不应该妨碍你。至于存储过程性能,我想指出的是Codinghoror和Reevaulate的Jeff Atwoods文章。硬件和内存一样便宜,数据库则不然。就我个人而言,我保持数据库超级简单和轻量级,并更喜欢让我的Web服务器缓存内存中的所有内容。数据库服务器只做很少的工作,这是我喜欢的方式。添加一些额外的负载平衡web服务器并不像增加数据库吞吐量、集群或分片DB那样重要。SQL和存储过程的编写和维护也非常困难。拿着你本该花在这件事上的预算,而不是加强你的硬件。。。记住硬件非常便宜,优秀的开发人员则不然。祝你好运

可能是个愚蠢的问题,但MS缓存应用程序块不是真的吗