2011-04-01 70 views
1

Web应用程序在前端层和后端层中通常会遇到哪些常见且显着的性能问题/瓶颈?用于提高性能的前端和后端技术

我的意思是在数据库中的一个例子是没有你正在查询的东西是一个索引。这会减慢查询速度。在前端使用JavaScript可能会让你的应用看起来很慢。

什么是帮助导航这些问题的一般经验法则?什么是一些很好的事情?

谢谢, 亚历克斯

+1

我今天把一些项目放在一起:http://stackoverflow.com/questions/5504500/is-there-any-good-idea-about-how-to-tuning-the-web-applications性能/ 5504625#5504625 – 2011-04-01 01:06:03

回答

3

在前端:

-push您的所有资产 - CSS文件,图像,静态内容 - 到CDN。 Edgecast非常好,价格合理。

- 当你只需要一些功能时,不要使用加载整个JavaScript框架。只加载需要的东西。

在后端

-memcache从通过使用SQL查询作为键名的哈希所有数据库调用的结果,并将结果设置为值

- 确保你是不是使您的数据库表真正'宽' - 吨''文本'和'斑点'的列和列类型

+0

+1(javascript)Telerik RadControls对此不利。 – 2011-04-01 10:09:15

3

对于前端,有著名的guidelines/rules你可以遵循,也有像YSlow一些伟大的工具,可以帮助你找出瓶颈。

对于后端,如您所知,有效使用索引是必须的。其他优化通常涉及缓存,以及基本的东西,比如避免在循环中执行一次就可以完成的东西。我相信这里的人会有建议,但请记住“不成熟的优化是万恶之源!” :-)

2

米尔豪斯对此表示欢迎。我还可以添加:

  • 批量昂贵的操作了。例如:如果你可以一次完成所有操作,就不要对数据库进行大量的单独调用。
  • 尽可能避免服务器跳数。
  • 如果可以的话,并行处理(对于'平均'网页应用程序并不常见,但在大型企业级应用程序中很可能)。
  • 预处理:处理数据,预处理内容等等,在需要之前你可以做得越多越好。
2

使用基于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

1

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