【问题标题】:Caching Twitter Results with Dalli使用 Dalli 缓存 Twitter 结果
【发布时间】:2011-10-12 05:00:42
【问题描述】:

我是 Ruby(和 Rails)的新手,希望您能帮助解决我遇到的一些困惑。

我正在尝试将Twitter gem 集成到我的网站中,以获取用户的最新推文,并获取指向他们个人资料图片的链接。直到(我认为是)一小时内第 100 次 API 调用之前,Gem 都运行良好,之后 Twitter 将切断您的联系。

根据我收集的信息,我需要使用 memcache 将结果缓存约 1 分钟。有一些很棒的pseudocode here,但不幸的是,这有点超出我的想象。我希望我能得到更多的细节。

目前,我不确定该代码应该放在哪里?我想在应用程序布局视图中显示 twitter 信息,那么它会进入 application_helper.rb 文件中的方法吗?

我为解决这个问题所做的最佳尝试导致了以下代码,该代码引发了“缺少帮助文件”错误。

module ApplicationHelper
  require "memcache"

  def twitter
    cache = MemCache.new
    twitter = cache.get("twitter").first
    if twitter.nil?
      begin
        twitter = Twitter.user("TwitterName") 
        cache.set("twitter", twitter, :expires_in => 1.minute) if twitter
      rescue
        twitter = default
      end
    end
    return twitter
  end
end

【问题讨论】:

    标签: ruby-on-rails ruby caching twitter


    【解决方案1】:

    首先为您的环境启用缓存和内存缓存(例如 config/environments/production.rb)

    # Use a different cache store in production
    config.cache_store = :mem_cache_store
    

    然后在要显示推文的视图中执行类似的操作

    <% cache("tweets", :expires_in => 42.minutes) do  %>
     <% Twitter.user_timeline("User").each do %>
        .....
      <% end %>
    <% end %>
    

    【讨论】:

    • 工作就像一个魅力,谢谢。抱歉回复晚了,我的网络断了。出于好奇,使用 memcache 代替 dalli 有什么好处吗?
    • 你是说老memcache驱动和dalli的区别?
    • 是的,我猜。那么它们只是不同的包装器吗?
    • dalli 是新的,旧的驱动没有维护。
    猜你喜欢
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 2014-02-17
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多