【问题标题】:Load data in background once initial website is loaded加载初始网站后在后台加载数据
【发布时间】:2016-05-04 14:21:16
【问题描述】:

我有一个包含帖子和 cmets 的提要。

我只显示最后 5 个 cmets,其他是 css-hidden,单击“显示所有 cmets”时会显示出来。

目前我的想法是在单击“显示”链接时获取那些 cmets (ajax)。

有没有办法在初始页面加载后立即在后台自动加载这些 cmets?

更新

<div class='container'>
    <div class='post'>This is a post</div>
    <div class='comment hidden'>This is a comment</div> # To load asynchronously
    <div class='comment hidden'>This is a comment</div> # To load asynchronously
    <div class='comment hidden'>This is a comment</div> # To load asynchronously
    <div class='comment hidden'>This is a comment</div> # To load asynchronously
    <a href='#'>Show all comments</a>
    <div class='comment'>This is a comment</div>
    <div class='comment'>This is a comment</div>
    <div class='comment'>This is a comment</div>
    <div class='comment'>This is a comment</div>
    <div class='comment'>This is a comment</div>
</div>

【问题讨论】:

  • 你能分享你的代码吗?

标签: javascript jquery ruby-on-rails asynchronous ruby-on-rails-5


【解决方案1】:

我认为流表是最好的方法。

StreamTable.js 背后的想法是最初填充最少的行(可能是 10 或 20),然后在后台静默地流式传输数据并更新表格。这可确保页面立即加载,并且也可立即用于所有操作。可以安全地假设,如果用户在同一页面上停留一段时间,那么用户很可能会对表格执行一些操作,如搜索、页面导航等。所以我们可以延迟流数据的过程在页面加载后说 2 秒。确保所有流式传输的数据必须立即可用也很重要。例如,2 秒后,如果我们流式传输了 1000 行,它们都应该是可搜索和分页的。

欲了解更多详情,请浏览此link
这是最好的 js 库之一。

【讨论】:

    【解决方案2】:
    <body onload="script();">
    

    或

    document.onload = function ...
    

    或

    window.onload = function ...
    

    【讨论】:

      【解决方案3】:

      我可能会考虑等待加载额外的 cmets(或至少大部分),直到用户执行给定的操作,例如单击“显示”链接。这可以防止您的页面加载(即使在后台)大量用户从未请求/需要查看的 cmets。如果您的任何用户在移动设备上,这也有助于减少您的应用程序的数据负载。

      就实现而言,您可以选择 JS/Ajax 工具(vanilla、jquery、angular、vuejs、react 等)并设置一个单击事件,将 X 多个 cmets 附加到您的初始列表中。

      希望有帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-24
        • 2019-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-04
        • 2013-01-07
        相关资源
        最近更新 更多