繁体   English   中英

Asp.net MVC实时应用程序性能

[英]Asp.net MVC real time application performance

我正在尝试创建一个asp.net mvc Web应用程序,某些页面需要“实时”显示数据,该数据位于sql server数据库中,数据总是在变化,因此我在sql server中创建了一个存储过程,我在使用实体框架linq的控制器中调用此过程,并使用ajax将结果发送到浏览器。我使用outputcashing最大限度地减少了存储过程的执行次数,在同一控制器中,有多种方法使用同一存储过程,每个方法methode执行相同的过程,如何提高我的应用程序的性能,是否有一种方法可以对所有控制器仅执行一次存储过程?

这是我的控制器,我的目标是最大程度地减少数据库的使用

   [OutputCache(Duration = 20, VaryByParam = "*")]
public class JobsETLController : Controller
{

    private ETL_REP_MAUIEntities db = new ETL_REP_MAUIEntities();
    public   ObjectResult<BIOGetETLJobs_Result> ETLJobs;

    public JobsETLController()
    {


        ETLJobs =db.BIOGetETLJobs();


    }

    public ActionResult Indexp()
    {

        var y = from xx in ETLJobs
             where xx.etat!="Completed"
             orderby xx.etat ascending
                select xx;
        return PartialView(y);
}



    public ActionResult IndexpAll()
    {

        var y = from xx in ETLJobs
                    where xx.etat == "Completed"
                select xx;
        return PartialView(y);
    }

如果您的服务器不在Web场中(多个服务器),则可以将数据缓存在Asp.net缓存中(这不是输出缓存,而是数据缓存)。 您只需为数据过期时间设置5分钟的时间限制(您说数据需要每5分钟更新一次),这样当控制器需要数据时,它首先检查缓存,如果不存在,它将执行存储过程。

MyData items;

items = (MyData)Cache["MyData"];
if(items == null)
{
   items = DoQueryToReturnItems();
   Cache.Add("MyData", items, null, DateTime.Now.AddMinutes(5), ..);
}

甚至可以将缓存项设置为依赖于SqlDependency,以便在数据更改时可以更新缓存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM