【问题标题】:how to store dynamically generated pages in html?如何在html中存储动态生成的页面?
【发布时间】:2012-04-05 15:20:47
【问题描述】:

我正在开发面临可扩展性问题的 ASP.net MVC3 Web 应用程序。

为了提高性能,我想将动态生成的页面存储在 html 中,并直接从生成的 html 中提供它们,而不是为每个页面请求查询数据库。

我相信这会显着提高性能。

任何人都可以分享任何关于如何做到这一点的提示/示例/教程吗?什么是挑战?

我还想知道其他人如何处理具有至少 1000 个类别和 200k 产品以及至少 200-500 名并发访问者的大型电子商务网站的性能问题?最好的方法是什么?

提前致谢。

【问题讨论】:

  • 如果你告诉它,它会这样做。静态页面是内核缓存的,动态页面是动态的,所以它们不是 - 你必须告诉它通过 OutputCache 缓存它们,如下所述

标签: performance asp.net-mvc-3


【解决方案1】:

你应该看看Improving Performance with Output Caching

它提供了几种缓存控制器输出的方法,如下所示:

[OutputCache(Duration=10, VaryByParam="none")]
public ActionResult Index()
{
    return View();
}

【讨论】:

    【解决方案2】:

    您不需要这样做,只需启用输出缓存即可。这将是相同的,而不是使用创建页面的所有逻辑,您将检索静态页面,但来自缓存而不是磁盘。

    【讨论】:

      【解决方案3】:

      我会考虑为经常查看的页面实现缓存系统。 .Net 平台有一些非常不错的缓存库,可以使用这些库来实时管理缓存。

      缓存最佳实践 msdn.microsoft.com/en-us/library/aa478965.aspx

      我还可以看看编写一个可以跨集群的多个节点进行负载平衡的 RESTful API。

      【讨论】:

        【解决方案4】:

        你知道你的容量瓶颈在哪里吗?

        我的猜测是您的数据库是瓶颈,但除非您通过测量找出瓶颈在哪里,否则您可能会花费大量时间来优化可能没有太大区别的东西。

        首先要做的是获取一份 PAL 副本并监控网络服务器和数据库,看看它告诉你什么。

        还运行 SQL 查询来诊断最昂贵和最频繁的查询。

        测量您实际的页面生成时间,并在堆栈中跟踪它以查看正在进行哪些调用,哪些调用成本高且可以缓存。

        我一般会在网络服务器前面引入缓存层,在应用服务器和数据库之间引入缓存层,而不是输出缓存,但不测量很难判断。

        如果您想了解更多关于缓存的一般信息,我会阅读我不久前写的这个答案How to get started with web caching, CDNs, and proxy servers?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-30
          • 2012-07-08
          • 1970-01-01
          • 2013-04-01
          • 2019-10-30
          • 2011-03-22
          • 2015-02-20
          • 1970-01-01
          相关资源
          最近更新 更多