【问题标题】:Best way to display a Twitter feed (with history) on a Rails site在 Rails 网站上显示 Twitter 提要(带有历史记录)的最佳方式
【发布时间】:2023-04-04 17:00:01
【问题描述】:

在 Rails 网站上,我想显示某个 Twitter 提要,带有分页功能,以便访问者可以看到以前的推文(根据需要返回)。

我使用 Twitter gem 实现了它,使用 Search 方法,它有一个很好的分页方法,但遇到了一个限制,即 Twitter 只能返回过去两周的法规。因此,在返回几页后,它将不再获取。

我可以使用带有 max_id 的 user_timeline 方法,然后自己进行分页(将查看的最后一个项目的 max_id 传递回控制器以获取下一批)。

或者,我可以有一个 rake 任务,经常轮询 Twitter 提要(使用 cron),并将推文存储在数据库中。该网站将从数据库中提供这些服务,而不是查询 Twitter。

哪种方法是最好的或推荐的方法?我不喜欢将推文存储在数据库中,但这也可以解决查询 Twitter 的延迟问题(尽管我可以使用片段缓存来克服这个问题,除非我无法让它使用阿贾克斯)。

感谢您的建议。

【问题讨论】:

    标签: ruby-on-rails ruby twitter


    【解决方案1】:

    我会去将推文存储在数据库中。
    因此,即使 twitter 处于离线状态,您也不会有一些长时间的加载问题。您只需依靠您的数据库,推文就会得到适当的显示。
    只有您的后台作业会失败,因为 twitter 不可用。但这并不是真正的问题。

    【讨论】:

      【解决方案2】:

      我在这里持相反的观点,出于多种原因,将推文存储在数据库中并不是一个好主意。

      1. 您永远无法确定您是否获得了所有最近添加的推文,因为整个推文可以快速连续添加。当然,您可以让 cron 作业更频繁地运行,但接下来我们会遇到下一个问题。

      2. 如果推文被删除,无论出于何种原因,您的应用仍会缓存它们,这对我来说也是不错的做法,因为它们会因某种原因被删除。

      老实说,我不会让你的应用程序提供推文,但在页面上有一个“小部件”(jquery 或类似的),一旦页面加载就会喜欢它们,并考​​虑在那里实现某种形式的分页而是。

      【讨论】:

      • 我知道这是一篇旧帖子,但这种方法的问题是 twitter 的速率限制。如果将它加载到服务器上,那么每小时 150 次页面浏览量非常低,因此采用 javascript 方法允许每个 IP 地址(网站访问者)对 Twitter 的 API 进行 150 次点击。但是,这适用于可能使用相同类型小部件的每个站点,并且如果您在大型网络(例如公司或大学)上,您有多个用户(如果不是数百个)都计入相同的 150 个请求配额.不幸的是,没有完美/简单的解决方案。
      【解决方案3】:

      我们下载推文并将其存储在本地数据库中。我最近写了一篇关于我们如何实现这一目标的博文:

      http://www.arctickiwi.com/blog/16-download-you-twitter-feed-using-ruby-on-rails-with-oauth

      然后您可以使用 will_paginate 来处理您的分页并返回任意位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-15
        • 2023-04-05
        • 2013-02-21
        • 2014-10-05
        • 2011-10-23
        • 1970-01-01
        • 2014-09-14
        • 2019-01-06
        相关资源
        最近更新 更多