问题标签 [fragment-caching]

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 回答
186 浏览

ruby-on-rails - RubyOnRails:片段缓存条目创建日期

是否可以获得片段缓存条目创建日期?

详细信息:我在 ChilliProject 的 Wiki 页面中使用片段缓存来呈现附件链接。缓存键由附件文件名组成。如果附件被重新加载,我需要更新缓存。所以我想比较附件文件修改日期和缓存条目的创建日期。我该怎么做?

先谢过。

0 投票
1 回答
36 浏览

ruby-on-rails - Rails:缓存有替代品?

我有一部分正在缓存,但其中一部分是动态的:

并想把它变成这样的东西:

是否有一些宝石或方法可以做到这一点?

更新:

请不要建议以任何方式赚钱作为关键的一部分,这就是我们现在正在做的事情。

0 投票
4 回答
1068 浏览

ruby-on-rails - 片段缓存和急切加载:如何两全其美?

在我看来,片段缓存和急切加载——至少有时——有些矛盾。假设我有一个用户,他有很多帖子,每个帖子都有很多评论,而这些评论又可以有很多评论等等。

当我必须渲染页面时,我可以选择预先加载用户、她的所有帖子、他们的所有评论等,以避免访问数据库 n-1 次。或者我可以懒惰地加载每个对象并依靠片段缓存来仅查询数据库中的新对象或已更改的对象。同时使用片段缓存和急切加载似乎很浪费,因为我可能会执行非常复杂的查询并实例化大量对象而只使用其中的一小部分。

但是,如果我有一个应用程序,其中用户有许多 Foo,而这些 Foo 又具有许多 Bars 等等,但其中每个 Foo 同时创建完整的所有 Bars 及其关联对象,从那时起永远不会改变. 在这种情况下,我想对已经渲染的 Foo 使用片段缓存,但是当我必须加载一个新的 Foo 及其所有关联对象时使用急切加载。毕竟,在更细粒度的级别缓存片段并没有什么好处。

Rails 中实现此目的的最佳方法是什么?我想我可以做一个查询来只获取 Foo 的 id,然后在我必须渲染每个 Foo 时使用急切加载进行显式查找。有没有更好/更优雅/更惯用的方式来做到这一点?

0 投票
1 回答
423 浏览

ruby-on-rails - Rails 避免在基本显示操作上使用片段缓存进行查询

我正在玩片段缓存,我已经阅读了指南并观看了 railscast。

我正在尝试对基本的显示操作进行一些片段缓存:

控制器:

看法:

问题:虽然片段是构建和读取的(见下面的日志),但数据库仍然被命中。这是正常行为吗?

我怀疑在读取缓存之前触发查询之前的操作过滤器。

我怀疑友好的 id 系统,但查询也发生在经典的 find 中。

我应该如何缓存它以避免查询?

日志:

0 投票
2 回答
545 浏览

ruby-on-rails - 使用后台工作人员进行片段缓存

我有一个呈现很多部分的页面。我将它们全部分段缓存,这使得它非常快。万岁!

问题是,由于partials的数量,第一次运行,写入缓存时,需要很长时间,请求超时(但其他时间真的很快)

我也使用sidekiq(但这个问题与任何后台处理器有关)

有没有办法将这些部分保存在后台进程中,以便错过缓存(由于过期)的用户不会超时?所以我会检查所有部分,那些缓存过期(或即将过期)的部分我会重新缓存它们吗?

0 投票
1 回答
134 浏览

ruby-on-rails - Rails 片段缓存不获取最新的

我有这种缓存

_obj.html.erb我有

当仅更改父级的数据时,我仍然获得与以前相同的缓存。只有当 obj 的 updated_at 发生变化时,内部缓存才会更新。

这是正确的行为吗?缓存部分中的缓存不应该单独处理吗?还是每次触摸 obj.parent 时都需要触摸 obj?

0 投票
1 回答
179 浏览

ruby-on-rails - 视图片段中的俄罗斯娃娃缓存和基于权限的链接

我有一个使用俄罗斯娃娃缓存的视图,其中缓存了整个项目集合,并且集合中的每个项目都单独缓存在该缓存中。

但是,集合中的每个项目都应根据当前用户通过 CanCan 授予的权限显示编辑/删除链接。因此,用户 A 只会在她自己的帖子旁边看到编辑/删除链接,而不会在用户 B 的帖子旁边看到。

好吧,每当用户 A 创建帖子时,它都会使用适当的编辑/删除链接进行缓存,因为她应该根据她的权限让这些链接可见。但是,当用户 B 查看该集合时,他会看到用户 A 的缓存帖子,以及他不应该看到的编辑/删除链接。当然,CanCan 阻止了这些编辑/删除操作的发生,但链接仍然存在。

是否有根据 current_user.id 创建单个缓存并防止拥有(几乎)相同缓存内容的版本?

0 投票
1 回答
42 浏览

ruby-on-rails - Rails 的 Fragment Caching 可以在不引用持久对象的情况下使用吗?

我正在处理的项目是一个控制台风格的应用程序,根本无法访问任何持久对象。我们所有的模型都是瞬态对象,Hashie::Mash它们通过访问各种 API 调用来扩展和动态填充。

我正在研究Rails片段缓存,这些示例暗示片段缓存机制依赖于持久化的模型。

我正在寻找不假设持久模型的片段缓存示例。

0 投票
1 回答
208 浏览

ruby-on-rails - 预构建片段缓存(内部方法)

我想预先构建一个需要几秒钟才能渲染的部分。我见过使用代理通过 http 预加载缓存的函数,但我想要一个“内部”解决方案。

这是我的函数,每当myobject更新时都会调用它:

它适用于使用基本助手的部分,但我的自定义助手抛出错误:

undefined method `my_custom_helper_function' for #<#<Class:...>

我想助手必须包含在 中the_controller,但我找不到这样做的方法。提前感谢您的帮助!

0 投票
2 回答
2044 浏览

ruby-on-rails - Rails 4.2 片段缓存不起作用

我正在尝试对我网站的静态部分进行分段缓存,但它似乎根本不起作用。我已经设置了config/application.rb以下内容:

在我看来,我有这个:

我的日志中没有看到任何关于将片段保存到缓存或在后续页面加载时检索它的内容。我也尝试过使用默认的 Rails:file_store缓存。我知道缓存存储正在工作,因为使用Rails.cache.fetch工作正常。

我怎样才能让它工作?