【问题标题】:Front and back end techniques to increase performance提高性能的前端和后端技术
【发布时间】:2011-07-27 08:30:42
【问题描述】:

在前端层和后端层的 Web 应用程序中通常会遇到哪些常见且值得注意的性能问题/瓶颈?

我在数据库中的意思的一个例子是没有你要查询的东西是一个索引。这会减慢查询速度。在前端,JavaScript 可能会发生一些奇怪的事情,让您的应用程序看起来很慢。

帮助解决此类问题的一般经验法则是什么?有什么好做的?

谢谢, 亚历克斯

【问题讨论】:

标签: performance architecture scalability


【解决方案1】:

在前端:

-将您的所有资产(css 文件、图像、静态内容)推送到 CDN。 Edgecast 相当不错,而且价格合理。

-当您只需要其中的一些功能时,不要使用加载整个 javascript 框架。只加载需要的内容。

在后台

-memcache所有数据库调用的结果,使用sql查询的哈希作为键名,结果集作为值

-确保您的数据库表没有真正“宽” - 大量的列和列类型,如“文本”和“blob”

【讨论】:

    【解决方案2】:

    对于前端,您可以关注知名的guidelines/rules,还有一些很棒的工具,例如YSlow,可以帮助您查明瓶颈。

    对于后端,正如您所指出的,高效使用索引是必须的。其他优化通常涉及缓存和基本的东西,比如避免在循环中做一些可以做一次的事情。我相信这里的人会有建议,但请记住“过早的优化是万恶之源!” :-)

    【讨论】:

      【解决方案3】:

      米尔豪斯正在努力。我还可以补充:

      • 批量处理昂贵的操作。例如:如果您可以一次性完成所有操作,请不要对数据库进行大量单独调用。
      • 尽可能避免服务器跃点。
      • 如果可以的话,并行处理(对于“普通”网络应用程序并不常见,但在大型企业级应用程序中却很有可能)。
      • 预处理:处理数据、预发布内容等,在需要之前做的越多越好。

      【讨论】:

        【解决方案4】:

        使用基于 CQRS 的架构。 CQRS 代表命令/查询责任分离;它基本上意味着您有不同的代码(服务)用于从数据库读取和写入数据库。可扩展性的一个好的做法是使用单独的数据库进行读取和写入(如果您了解更多有关 CQRS 的信息,这确实很有意义),并且您可以通过在多个服务器上运行副本来扩展读取数据库。

        CQRS 不仅从可扩展性的角度来看很有趣,而且从代码维护和清晰度的角度来看也很有趣。不过,了解和理解 CQRS 确实需要一些努力。

        查看这些链接:

        http://www.slideshare.net/skillsmatter/ddd-exchange-2010-udi-dahan-on-architectural-innovation-cqrs

        http://www.slideshare.net/pjvdsande/rethink-your-architecture-with-cqrs

        【讨论】:

          【解决方案5】:

          将动态内容转换为静态内容。如果它们的依赖对象发生变化,则重新生成这些静态内容。我看到一篇文章说亚马逊网站上 80% 以上的内容都是静态的。

          【讨论】:

            猜你喜欢
            • 2011-07-12
            • 1970-01-01
            • 1970-01-01
            • 2012-07-30
            • 1970-01-01
            • 2017-10-16
            • 1970-01-01
            • 2013-10-19
            • 1970-01-01
            相关资源
            最近更新 更多