Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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
Asp.net mvc 我应该实现哪一层缓存_Asp.net Mvc_Model View Controller_Caching - Fatal编程技术网

Asp.net mvc 我应该实现哪一层缓存

Asp.net mvc 我应该实现哪一层缓存,asp.net-mvc,model-view-controller,caching,Asp.net Mvc,Model View Controller,Caching,我的网站正在运行。但是,有许多客户端需要调用服务器以获取将连接到数据库以检索的数据。为了提高数据库的性能,我需要在web服务器中实现缓存 我应该在数据访问或模型层实现它。我正在使用ASP.NETMVC。谢谢。web应用程序中可能有两种级别的缓存: 缓存整个动作或HTML片段 缓存数据访问操作的结果对象 第一个场景是通过使用属性修饰动作/子动作来实现的 第二种更细粒度,这取决于您的设置。例如,如果您正在使用诸如NHibernate之类的ORM,那么您的ORM可能已经支持缓存了。例如,NHibern

我的网站正在运行。但是,有许多客户端需要调用服务器以获取将连接到数据库以检索的数据。为了提高数据库的性能,我需要在web服务器中实现缓存


我应该在数据访问或模型层实现它。我正在使用ASP.NETMVC。谢谢。

web应用程序中可能有两种级别的缓存:

  • 缓存整个动作或HTML片段
  • 缓存数据访问操作的结果对象
  • 第一个场景是通过使用属性修饰动作/子动作来实现的

    第二种更细粒度,这取决于您的设置。例如,如果您正在使用诸如NHibernate之类的ORM,那么您的ORM可能已经支持缓存了。例如,NHibernate支持二级缓存,甚至可以使用缓存提供程序将二级缓存外部化。因此,如果您正在使用ORM,请查看ORM的文档,看看它是否支持这种缓存功能


    如果您的ORM不支持缓存,或者您根本没有使用ORM,那么您可以自己构建缓存。这可以在您的服务层上实现,您可以在其中注入一些缓存提供程序作为依赖项,并且当您的服务查询存储库时,使用该提供程序缓存这些存储库返回的结果。

    您的数据访问层是如何实现的?它是ORM还是手工编码的?你在缓存什么?多久申请一次?它有多少种变体?它有多大?有多少并发用户?你能忍受“过时”数据多久?为什么要在数据访问层中缓存?首先,在有意义的地方缓存整个控制器方法。。