【问题标题】:Rails Cache Digest and JbuilderRails 缓存摘要和 Jbuilder
【发布时间】:2013-05-22 15:07:18
【问题描述】:

我将 Jbuilder 用于我的 JSON API 输出,现在我想使用 Rails 3.2.13 的“cache_digest”gem 添加缓存。

它工作正常,缓存模板已创建并从缓存中读取,但问题是,如果我更改模型条目,例如更改“标题”,它不会使缓存过期并且仍然显示旧标题.

这是我的 jbuilder 模板索引:

json.cache! "news" do |json|
    json.array!(@news) do |news|
        json.id news.id
        json.title news.title
        json.excerpt news.excerpt
        json.content strip_links news.content
        json.image news.image
        json.source news.source
        json.published_at news.published_at
        json.created_at news.created_at
    end
end

我正在通过 RailsAdmin 界面更改属性。

【问题讨论】:

    标签: ruby-on-rails caching


    【解决方案1】:

    解决方案是传递@news 集合而不是“新闻”字符串作为缓存键,例如:

    json.cache! @news do |json|
        json.array!(@news) do |news|
            json.id news.id
            json.title news.title
            json.excerpt news.excerpt
            json.content strip_links news.content
            json.image news.image
            json.source news.source
            json.published_at news.published_at
            json.created_at news.created_at
        end
    end
    

    当我第一次尝试此操作时,当它尝试在磁盘上创建缓存文件时,我收到一条错误消息“文件名太长”。这是因为我的@news 集合太大(对象太多),所以我将其更改为返回更少的对象。这对于 memcached 之类的东西不会有问题,但是当保存到磁盘时,文件名的长度受到操作系统的限制。

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 2015-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 2020-04-11
      相关资源
      最近更新 更多