网站性能 - 它是什么?可读性和无知性。性能

时间:2010-08-31 20:30:42

标签: performance web

让我切入追逐...... 一方面,给出的许多编程建议(此处和其他地方)强调了代码应始终尽可能可读和清晰的概念,(几乎?!)任何修改成本。 另一方面,有很多慢的网站(至少其中一个,我从个人经验中知道) 显然,往返和数据库访问是Web开发人员应始终牢记的问题。但可读性和不做之间的权衡,因为它减慢了事情,对我来说非常不清楚
问题是 - 1.还有什么?
2.是否有一条规则(最好是简单的,但可能相当普遍)应该坚持,以确保他的代码不会减慢太多的东西?
一般最佳实践以及具体建议将不胜感激。基于经验的建议将特别受到赞赏。

感谢。

编辑:稍微澄清一下:一般性能建议不难发现。那不是我想要的。我问的是两件事情.1。在尝试使我的代码尽可能可读的时候,我应该什么时候停下来说:“现在我的表现太差了。”2。鲜为人知的事情喜欢 - 只选择一列比选择全部更快(感谢Otávio)...

再次感谢!

4 个答案:

答案 0 :(得分:7)

请参阅此处的Stack Overflow讨论:

What is the most important effect on performance in a database-backed web application?

最高投票的回答是,“把它写得干干净净,并使用分析器来识别真正的问题并解决它们。”

根据我的经验,由于LINQ的易用性,最大的错误(使用C#/ asp.net / linq)过度查询。一个巨大的查询通常比10000个小查询快得多。

另一个ASP.NET问题我看到很多是当视图状态变得非常胖和臃肿时。 EnableViewState = false是你最好的朋友,用它开始每一个新项目!

答案 1 :(得分:2)

对于具有数据库后端的Web应用程序,非常重要的是:

  • 索引正确完成
  • 检索是为了满足需要(在选择特定字段时避免选择* - 如果它们是覆盖索引的一部分则更是如此)

此外,只要有可能,适当的缓存策略可以帮助提高性能

答案 2 :(得分:0)

优化代码。

尽管使代码尽可能可读是非常重要的。优化它同样重要。我列出了一些有希望让你朝着正确方向前进的项目。

例如关于数据库:

  • 定义数据库的架构时,应确保对其进行规范化,并正确定义字段索引。
  • 运行查询时,特别是SELECT,只选择您需要的字段。
  • 每页加载只应与数据库建立一个连接。
  • 重新因子。这可能是生成干净,优化代码的最重要因素。请务必回过头来查看您的代码,看看可以采取哪些措施来改进它。

PHP代码:

  • 始终使用PHPUnit等工具测试您的工作。
  • echo比打印更快。
  • 用单引号(')代替双引号(“)包裹你的字符串更快,因为PHP搜索”...“内的变量而不是'...'中的变量,当你不使用需要评估的变量时使用它你的字符串。
  • 使用echo的多个参数(或堆叠)而不是字符串连接。
  • 取消设置或取消变量以释放内存,尤其是大型数组。
  • 使用严格的代码,避免抑制错误,通知和警告,从而产生更清晰的代码和更少的开销。考虑始终打开error_reporting(E_ALL)。
  • 增加未定义的局部变量比预先初始化的变量慢9-10倍。
  • 派生类中的方法比基类中定义的方法运行得快。
  • 使用@进行错误抑制非常慢。

网站优化

性能是一个很大的主题,您可以做很多事情来帮助提高网站的性能。这需要时间和经验。

最佳, Richard Castera

答案 3 :(得分:0)

Scott和Rcastera在数据库和查询优化方面做得很好。要从HTML / CSS / JavaScript的角度解决您的问题:

<强> CSS: 可读性是关键。 CSS渲染速度如此之快,以至于您永远不会觉得有必要牺牲性能的可读性。因此,专注于添加尽可能多的注释以记录代码,为什么某些规则(如黑客)在那里,以及其他任何漂浮你的评论船。在CSS中,有一些明显的规则要遵循:1)使用外部样式表。 2)限制外部样式表以限制GET请求。

HTML:与CSS一样,浏览器读取HTML的速度非常快,您应该只专注于编写干净的代码。使用空格,缩进和注释来正确记录您的工作。只有要记住的HTML中的主要内容是:1)在head部分的早期声明<meta charset />。 2)Follow this guys advice to minimize browser reflows。 *此规则实际上也适用于CSS。

JavaScript:现在大多数JavaScript的优化都是众所周知的,所以这些看起来很明显,比如在循环外部初始化变量,将javascript推送到body的底部,以便在脚本开始捆绑之前加载DOM所有资源,避免昂贵的陈述,如eval()或with()。听起来不像是破纪录,但在开发JavaScript代码时,保持评论良好且易于阅读的脚本仍然是一个优先事项。特别是因为您可以在部署时尽量减少和压缩所有多余的部分。