我们有一个转换为ASP MVC的解决方案,它正在变得越来越大。
现在的问题是: 应用程序的启动大约需要15秒以上,因为应用程序需要从数据库中预先缓存大量内容。
现在,在ASP MVC中,问题是,每当我们在控制器中更改某些内容时,整个应用程序都会关闭并重新启动,global.asax中的所有内容都会再次执行(就好像应用程序来自&# 34;冷启动"
想象一下:你写了一个简单的if条件,偶然你输错了参数 - >你必须纠正if条件。 - >整个应用程序是重新启动。
因此,每当我们改变小事情时,我们都要等待15秒以上。
在旧的ASP.NET中,您将大部分代码放在重新解释的.aspx文件中,但整个应用程序都没有关闭等。
有解决方法吗? 喜欢-lets称之为 - "解释控制器"而不是编译控制器?
这个ASP MVC的行为让它真的很烦人,目前的解决方法是尽可能多地把东西放到视图中,这是不好的做法 - 但是,嘿,这对我们有帮助,因为我们不必等待15+几秒钟,直到重新编译控制器并重新启动应用程序。
有什么想法吗?
此致
答案 0 :(得分:0)
因为应用程序需要从数据库中预先缓存很多东西
对我而言,这就是问题所在。事物本身并非如此(这是很正常的),但事实上你并没有将任何东西短路,例如将缓存的数据转储到商店或者......用于开发目的,文件系统。我将让你对我在本地调试时发生的事情有一个小秘密:
基本上,它欺骗:仅在开发中,为了避免运行任何昂贵的操作,在启动期间,它首先检查本地磁盘上的文件(具有正确的名称),并获得关键它需要的数据,而不是数据库;如果它必须命中数据库,它会存储之后获取的数据。显然,使用某种机制来刷新文件和内存存储,以便在需要时可以获取实际数据。
它不是一根魔杖,但它有所帮助。另一件事,显然是加快初始加载时间。如果你的情况不可能,我会感到惊讶。
答案 1 :(得分:0)
几周前参加过微软活动,焦点是ASP vNext。
我们还讨论了这种行为:它实际上是在vNext之前的ASP / MVC版本中设计的。
在下一个版本" ASP vNext"中,您可以动态更改控制器代码,而无需重新编译整个项目(因此,阻止关闭整个Web服务器进程)
好消息 - 至少对未来而言; - )