【问题标题】: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】:
米尔豪斯正在努力。我还可以补充:
- 批量处理昂贵的操作。例如:如果您可以一次性完成所有操作,请不要对数据库进行大量单独调用。
- 尽可能避免服务器跃点。
- 如果可以的话,并行处理(对于“普通”网络应用程序并不常见,但在大型企业级应用程序中却很有可能)。
- 预处理:处理数据、预发布内容等,在需要之前做的越多越好。
【解决方案5】:
将动态内容转换为静态内容。如果它们的依赖对象发生变化,则重新生成这些静态内容。我看到一篇文章说亚马逊网站上 80% 以上的内容都是静态的。