什么是生成网页的合理时间?

我正在开发Web应用程序(基于Rails 3)。 我真的不喜欢生成页面所需的时间 – 取决于显示的数据,它需要2.5到甚至4秒。

所以我只是想知道在您的应用中生成页面的平均合理时间是多少。 说你检查生成时间,例如它是750毫秒并且想“好吧,即使没有缓存也应该没问题”。 或者当你看到1.5秒时,你会想到“噢,我的上帝,用户不会等待这么长时间离开网站”

关于从查询到渲染的时间和用户体验,有大量的研究数据。 我建议阅读这篇useit.com文章 。 毕竟Google集成页面速度在其结果中有一个原因;)

今天的3个响应时间限制与我在1993年撰写的相同时间(基于人类因素先驱者40年的研究):

  • 0.1秒给出瞬间响应的感觉 – 也就是说,结果感觉它是由用户而不是计算机引起的。 这种响应水平对于支持直接操作的感觉至关重要(直接操作是增加用户参与和控制的关键GUI技术之一 – 有关它的更多信息,请参阅我们的界面设计原理研讨会)。
  • 1秒保持用户的思想流畅。 用户可以感知到延迟,因此知道计算机正在产生结果,但是他们仍然能够控制整体体验并且他们可以自由移动而不是等待计算机。 良好的导航需要这种程度的响应。
  • 10秒钟引起了用户的注意。 从1-10秒开始,用户肯定会受到计算机的支配并希望它更快,但他们可以处理它。 10秒后,他们开始考虑其他事情,一旦计算机最终做出响应,就更难让他们的大脑回到正轨。

延迟10秒通常会使用户立即离开网站。 即使他们留下来,他们也很难理解正在发生的事情,使他们不太可能在任何困难的任务中取得成功。

根据经验,认为你总是应该以优化时间与获得的时间之间的平衡为目标。 当你的图像没有正确压缩,或者你的脚本/ css没有合并时,不要花几天时间从一个例程中优化地狱。 是的,速度越快越好,但通过设置智能缓存生成页面90%的增益在调整算法一周后增加了10%。

当框架必须加载所有东西时,也不要过多考虑第一渲染时间,而是使用压力测试,缓存与否,来模拟各种情况。

现在,一些数据; 我工作的一些最新网站使用DotNetNuke,一个巨大的开源CMS,以及Asp.Net MVC,你更接近金属。 DotNetNuke的平均数据库查询平均页面时间为600-700毫秒。 对于Asp.net MVC,它是70-100毫秒……用户真的很喜欢第二个:)

对此没有’正确’的答案 – 越快越好。 我个人通常的目标是<200ms,虽然我从经验中知道,除了简单的应用程序之外,在Rails中实现这一点并不困难。 尝试找出你的瓶颈在哪里,并缓存你可以做的事情。

编辑:页面生成时间和页面渲染时间之间似乎存在一些混淆。 显然,快速页面渲染是目标,并且在大多数网站上执行诸如减少HTTP请求之类的事情,gzipping CSS / JS是您获得大部分快速获胜的地方。 但是如果页面本身可能需要4-5秒才能生成,那么您的应用程序就是您应该从哪里开始的。

这取决于是否在2.5-4秒内没有显示任何内容,或者用户已经从一开始就看到(部分)页面,并且在2.5-4秒后完成加载。 在这种情况下,用户不会经历2.5-4秒的负载。 以http://www.nytimes.com/网站为例; 我马上看到它的大部分,但根据Web Inspector,它需要1.94秒才能完全加载。

请记住,速度还取决于浏览器,计算机,互联网连接。 对你而言,快速的事情对其他人来说可能会变慢。

测量你的a​​pdex分数,看看它的表现如何。 这会给你一个粗略的迹象。 从那里,您可以决定如何提高性能。

这还取决于您的网站是什么; 企业或软件即服务(SaaS)的系统应用程序? 如果是系统应用程序,则用户被迫使用它来协商性能。 如果它是SaaS,则apdex分数越高,您失去用户兴趣的机会就越大。

有一些gem测量性能并报告你的apdex是什么。

这里有更多信息: http : //apdex.org/blog/?p = 630

我个人的规则 – 没有页面应该超过0.05秒,或者你遇到了麻烦。

只要您编写正确的代码,就不需要花费太多时间进行优化以保持在0.05以下。

如果你坚持使用巨型框架,那么你就不走运了。