问题标签 [dalli]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1889 浏览

ruby-on-rails - 使用分页(kaminari)时如何使用 dalli 实现片段缓存?

我知道dalli(缓存)是一个非常强大的插件,可以提高静态页面的性能。
但是带有分页的动态页面会经常更新吗?
正确的设置方法是什么dalli

例如,我遇到的一个问题:dalli使用分页时将不同的 params[:page] 识别为同一页面:(

dalli两者都使用时,你们将如何设计系统

  • 经常更新的页面
  • 不会经常更新的页面

例如。我有 4 个模型,例如UserCommunityTopicComment(defined Polymorphic to both Community, and Topic. They can be created or shown in #show pages)

就像是

  • 社区 > (has_many) > 主题 > (has_many) > 评论
  • 社区 > (has_many) > 评论
  • 都属于用户(创作者)

我当前的代码就是这样(这有点长。抱歉)
我在使用缓存时面临分页问题......

-------------------------------------设置------------ ----------------------------

配置/环境/development.rb

路线.rb

-------------------------------------社区------------ ----------------------------

控制器/communities_controller.rb#index&show

views/communities/index.html.erb 注意:但是,即使我移至下一个参数 [:page],内容也会相同:( 似乎缓存将不同的页面识别为相同的内容...

意见/社区/show.html.erb

模型/community_sweeper.rb

-------------------------------------主题------------ ----------------------------

控制器/topics_controller.rb#index&show

意见/主题/index.html.erb

意见/主题/show.html.erb

模型/topic_sweeper.rb

-------------------------------------评论------------ ----------------------------

模型/comment_sweeper.rb

0 投票
0 回答
123 浏览

ruby-on-rails - 在存储变量后一段时间,Rails 2 会话被破坏

我正在开发现有的 Rails 2 应用程序。我已经将一些散列数据结构转换为对象,如果我将一个放入会话存储中,它似乎会破坏会话,清除 user_id 等,并强制再次登录。我正在使用 dalli_store 进行会话。

以下代码导致会话被清除:

目前尚不清楚它在哪里被消灭了。我可以在调试器中逐步完成渲染视图,并且会话很好,但是当我在 UI 中点击另一个链接时,session它是空的(哈希 [0]),我被重定向到登录页面。

如果我稍微改变一下代码,就可以了:

但是,如果我存储实际对象(甚至是深层副本),会话就会丢失。即即使这样也行不通:

编组时 bug.size 大约为 140K,因此它不应超过 memcached。无论如何,我会假设 session 是由 序列化的Marshal::dump(),所以大小应该是相同的。存储后是否访问会话中的对象并不重要。只需将其放入会话中就足以导致问题,但正如我所说,存储对象后会话很好,并且一直通过视图渲染。直到下一个请求开始,我才发现它已被破坏。

我难住了。

你对如何调试这个有什么建议吗?目前,我想我可以显式调用 Marshal 来保存对象,但我真的很想了解为什么会话会被破坏。

我知道将大对象放入会话中是一件坏事,但是解决这部分问题超出了当前项目的范围......也许以后。另外,我很好奇这里发生了什么。

0 投票
1 回答
2098 浏览

ruby-on-rails-3 - DalliError:没有可用的服务器,但仍然写入/读取片段

我在我的服务器上检查了我的 production.log,每次怀疑代码读取或写入缓存时都会看到这些行:

为什么以及这是我需要担心的事情?我正在使用 dalli (2.6.2)、cache_digests (0.2.0)、rails (3.2.11) 和 memcached (1.4.2)。

我在安装memcached的时候,碰巧用了sudo,会不会跟这个有关系?

0 投票
1 回答
132 浏览

ruby-on-rails-3 - 在哪里初始化 Dalli::Client

我刚刚开始使用 Dalli gem 进行内存缓存。

我只是想知道如果我想从缓存中获取一些数据或者我可以声明一个可以重用的单例,我是否需要在每个请求中创建一个 Dalli::Client 的实例?

0 投票
9 回答
5173 浏览

ruby-on-rails - Rails 缓存键生成为 ActiveRecord::Relation

我正在尝试生成一个片段缓存(使用 Dalli/Memcached 存储)但是密钥是使用“#”作为密钥的一部分生成的,所以 Rails 似乎没有识别出缓存值并且正在命中数据库。

我在视图中的缓存键如下所示:

控制器具有:

使用像这样的实际 Active Record 查询:

查看 rails 服务器,我看到缓存已读取,但 SQL 查询仍在运行:

关于我可能做错了什么的任何想法?我确定它必须使用密钥生成和 ActiveRecord::Relation,但我不确定如何。

0 投票
4 回答
2935 浏览

ruby-on-rails - How do cache finding object by id

How to cache finding object by id, since we observe a select call being made all the time on a certain id. How should we enable this in rails in a non obtrusive fashion, so that we can switch between any cache store in the future (say memcached or redis)

EDIT:

Much similar to Hibernate based caching strategy org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE which is applied on all Entity classes in Java EE.

0 投票
1 回答
62 浏览

ruby-on-rails - 调用 DC.flush_all 会清除整个缓存,在使用乘客时也是如此?

我正在使用 Phusion 乘客和 memcached (Dalli Gem)。我想清除完整的缓存(类似于运行 telnet localhost 11211 然后在 telnet 命令上运行 flush_all)。

是否保存运行:

在分叉的 Phusion 乘客设置中?

0 投票
2 回答
3381 浏览

ruby-on-rails - Rails memcache 存储默认自动过期时间

我一直在努力找出 Rails 是否设置了一些默认过期时间,以防我们在将键值对存储到内存缓存时不提供任何时间?例如 Rails.cache.write('some-key', 'some-value')

如果我们没有指定,rails 会默认设置一些过期时间吗?

0 投票
1 回答
111 浏览

ruby-on-rails - 如何使特定于某个对象ID的rails缓存检索

对于 bar_id = 1,缓存在第一次访问时形成。但即使 bar_id 稍后更改为 2,也会保留 1 的值。如何使它跨 bar_id(s) 工作

0 投票
1 回答
389 浏览

ruby-on-rails - memcached localhost / aws with rails

我正在使用 rails 并通过载波插件将图像上传到 AWS。我开始使用 memcached/dalli 缓存图像,它可以正常工作一段时间......但是一段时间后所有图像都显示为损坏(大约 20-30 分钟或使用不同的浏览器时)。

这是一个示例...缓存这组图像,其中 post.avatar_url 是图像的 AWS url。图像通常可以在没有缓存的情况下正常加载……但缓存似乎最终会导致图像损坏。

是什么导致图像破裂?

谢谢!