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

时间:2014-06-08 18:32:44

标签: c# sql sql-server asp.net-mvc entity-framework

我试图创建一个asp.net mvc Web应用程序,有些页面需要在"实时"中显示数据。 ,这个数据是在sql server数据库上,数据总是在变化 我在sql server中创建了一个存储过程,我使用Entity framework linq在我的控制器中调用此过程,并使用ajax将结果发送到浏览器 我使用outputcashing来最小化存储过程的执行次数, 在同一个控制器中有多个使用相同存储过程的方法,每个方法执行相同的程序, 如何改善我的应用程序的性能, 有没有办法只对所有控制器执行一次存储过程?

这是我的控制器,我的目标是尽量减少数据库的使用

   [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);
    }

1 个答案:

答案 0 :(得分:1)

如果您的服务器不在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,这样当数据发生更改时,缓存就可以更新。