我正在研究面临可扩展性问题的ASP.net MVC3 Web应用程序。
为了提高性能,我想在html中存储动态生成的页面,并直接从生成的html提供它们,而不是为每个页面请求查询数据库。
我相信这会大大提高性能。
任何人都可以分享关于如何做的任何提示/示例/教程吗?什么是挑战?
我还想知道其他人如何处理具有至少千个类别的大型电子商务网站和至少200-500个并发访问者的200k产品的性能问题?什么是最好的方法?
提前致谢。
答案 0 :(得分:2)
您应该查看Improving Performance with Output Caching。
它提供了几种缓存控制器输出的方法,如下所示:
[OutputCache(Duration=10, VaryByParam="none")]
public ActionResult Index()
{
return View();
}
答案 1 :(得分:1)
您不需要这样做,只需启用输出缓存即可。它将是相同的,而不是用于创建您将检索静态页面的所有逻辑,而是从缓存而不是磁盘。
答案 2 :(得分:0)
我会考虑为常用页面实现缓存系统。 .Net平台有一些非常好的缓存库,可以让你实时管理缓存。
缓存最佳实践 msdn.microsoft.com/en-us/library/aa478965.aspx
我也可以看一下编写一个可以在群集的多个节点之间进行负载平衡的RESTful API。
答案 3 :(得分:0)
您知道容量瓶颈在哪里吗?
我的猜测是你的数据库是瓶颈,但除非你测量找出瓶颈在哪里,否则你可能会花费大量时间来优化可能没有多大差别的事情。
要做的第一件事就是获取PAL的副本并监控Web服务器和数据库以查看它告诉您的内容。
还运行SQL查询来诊断最昂贵和频繁的查询。
衡量你实际上是页面生成时间并在堆栈中跟踪它以查看正在进行的调用以及哪些调用很昂贵且可以缓存。
我不是输出缓存,而是在网络服务器前面引入一个缓存层,在应用服务器和数据库之间引入缓存层,但是没有测量它很难判断。
如果您想了解更多关于缓存的信息,我会读到我之前写的这个答案How to get started with web caching, CDNs, and proxy servers?