【问题标题】:Best Practices for Optimizing Dynamic Page Load Times (JSON-generated HTML)优化动态页面加载时间的最佳实践(JSON 生成的 HTML)
【发布时间】:2010-11-09 11:09:37
【问题描述】:
我有一个 Rails 应用程序,我在其中加载了一个基本的 HTML 布局,并用来自 JSON 的 div 行填充主要内容。这分两步进行:
- 呈现 HTML
- Ajax 调用以获取 JSON
这样做的好处是可以缓存变化不大的 HTML 布局,但它似乎有更多的缺点:
- 2 个 HTTP 请求
- HTML 并没有那么复杂,生成的 html 是完成所有工作的地方,所以我可能不会节省那么多时间。
- 在我的具体案例中,每个请求都要求我们检查当前用户、他们的角色以及与该用户相关的一些内容,因此这两个调用在一定程度上涉及到。
当然,memcached 可能会解决很多问题,我想知道这里是否有一些最佳实践。我想我可以这样做:
- 在
script 块中呈现 JSON 内联的第一页以及 HTML。这将切断需要用户身份验证的 2 个服务器调用。而且,假设 80% 的时间您不需要进行第二次 ajax 调用(在本例中为分页/排序),这似乎是一个相当不错的解决方案。
你对如何解决这个问题有什么想法?
【问题讨论】:
标签:
ruby-on-rails
performance
【解决方案1】:
做这样的事情有利有弊。一般来说,我认为这只是一个好主意,如果您通过 ajax 调用延迟的任何内容都会延迟页面加载,从而在您页面上的大多数用例中惹恼最终用户。
浏览 github 上的存储库就是一个很好的例子。 90% 的时间你想要的只是浏览文件,因此它们使用 ajax 加载在页面加载后填写每个文件的提交消息。
听起来您正在尝试这样做以加快速度或为您的用户做一些花哨的事情,但我认为您应该考虑一下,哪些部分很慢,以及页面加载的速度如何(可能还有关于该页面)在您的用户期望。正如您所说,使用 memcached 或片段缓存很可能会为您提供所需的改进。
【解决方案2】:
您是否在使用某种监控工具?我在 Heroku 上使用免费版本的 New Relic RPM。它提供了大量有关单个控制器操作的请求时间的数据。这样的数据可以帮助您专注于优化过程。