问题标签 [action-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 投票
4 回答
1698 浏览

ruby-on-rails - 启用动作缓存后,format.js 不会操作 dom

注意:我在这里提出我正在做的逻辑。

我在做什么:

想想我们列出产品和分页的基本索引操作。现在使用 remote-true 选项,我启用了基于 ajax 的分页。到目前为止,一切都很好。看一下示例代码。

产品控制器:

索引.html.erb

索引.js.erb

所以有什么问题:

现在我想对此启用动作缓存。但是 index.js.erb 文件并没有操作 DOM。如果我删除了 remote-true 功能,那么缓存就可以正常工作。

对于动作缓存,我在控制器顶部添加了这一行:

有什么建议么?

更新:

问题是 jquery 代码没有执行。从这个问题

我发现出了什么问题。jQuery 实际上用 a 包围传入的脚本,以便浏览器评估传入的代码。但是缓存机制只是将代码保存为文本,当再次请求时,它会将代码作为文本返回,但不对其进行评估。因此,需要明确地评估代码

但是这个问题怎么解决??

0 投票
1 回答
1259 浏览

ruby-on-rails - 无法在 Rails 上过期操作

tl;博士

expire_index下面的方法被调用,我puts在日志中看到了。但是,当我刷新页面时,是旧版本。

注意:我正在使用 rails_admin 来更新模型。但也注意到直接使用 rails 控制台的相同行为。

谢谢你的帮助。非常感激!

细节

app/controllers/posts_controller.rb

app/sweepers/post_sweeper.rb

config/environments/production.rb

0 投票
2 回答
1548 浏览

ruby-on-rails - Rails 动作缓存 RSpec 测试失败

我有一个规范,可以在禁用缓存和启用缓存时测试动作缓存。似乎测试执行的顺序会影响它们是否通过。

当以上述顺序运行测试时,最后一个测试失败,因为 cache_store 在最后一个期望中不存在。我很难理解为什么无缓存测试会影响缓存测试。有谁知道出了什么问题?

0 投票
1 回答
1801 浏览

ruby-on-rails-3 - Rails 动作缓存过期后刷新

我希望过期,然后使用可公开访问的端点刷新控制器操作的缓存。

目前在我的应用程序中,/all 返回缓存的 json,并且 /update 使缓存过期。您可以在下面看到现有的相关代码。我想做的不仅是使缓存过期,而且还强制刷新。所以,我的问题是:

有没有办法在动作缓存过期后启动它的刷新,而不点击动作?

如果答案是否定的(正如我开始怀疑的那样),那么最好的方法是什么?我要求更新操作返回 HTTP 200 状态,而不是 301 重定向,因此仅重定向到 /all 不是一个选项。

供应商控制器

0 投票
1 回答
771 浏览

ruby-on-rails - 未为 rails 引擎中的控制器定义 caches_action

我有一个 Rails4 应用程序,一个MyEngine带有控制器的安装 rails 4 引擎MyController

我在控制器中定义了多个缓存操作,如下所示,

我还在我的 gemspec 中包含了 gemactionpack-action_caching版本1.0.0

当我尝试点击任何指向我的路线时,MyController我收到以下错误:

我正在使用开发环境,所以我还更改了环境的配置以启用缓存:

我已经尝试过改变一堆东西,比如将这个块添加到engine.rbinto_prepareinitializerblock 中。

我也试过设置config.action_caching = trueengine.rb

我确定我错过了一些非常基本的东西,只是无法找出什么!

编辑1

也尝试caches_action在应用程序中添加操作。它抛出相同的错误。

为了调试,我在里面添加了一些打印语句gem

在这一行require 'action_controller/action_caching',它true在服务器启动时打印。

那就更莫名其妙了!

0 投票
0 回答
205 浏览

ruby-on-rails - 使用自定义 cache_path 为动作缓存过期缓存

我已经使用以下语法在 rails 3.2 中实现了动作缓存

但是,我希望每当更新缓存时,所有版本的设备类型的操作缓存都会过期。我在控制器中使用以下语法。 expire_action( :action => :show)

可悲的是,上面的代码没有按预期工作。坦率地说,我是使用缓存的新手,非常感谢任何帮助。

0 投票
1 回答
1388 浏览

ruby-on-rails - 如何在活动管理员中实现页面缓存或动作缓存

我们在我们的应用程序中使用活动管理员。我有大量数据等需要管理。我想在活动管理员中实现页面缓存/动作缓存,并希望在我的特定调用中使片段过期。我不介意在索引页面上显示一段时间的陈旧数据。有人可以提供一些基本示例如何在活动管理员中实现 page_caching/action_caching 吗?

0 投票
1 回答
164 浏览

ruby-on-rails-4 - Rails 4:如何在生产环境中卸载“actionpack-page_caching”并清除缓存

我尝试使用“actionpack-page_caching”gem 在 Heroku 上提供静态 html 页面,发现 Heroku 不支持它,或者至少让它变得更困难一些。gem 在开发中工作得很好,但在生产中却不行,现在我试图缓存的页面看起来都很时髦。虽然这首先不是必需品,但我只想卸载 gem,但看起来服务器仍在推出页面的缓存版本。

我尝试卸载 gem(“gem uninstall actionpack-page_caching”),然后清除缓存(heroku run rails console Rails.cache.clear & heroku rake tmp:clear),但没有成功。我的文件已经恢复到原来的样子,所以我不知道我做错了什么。

0 投票
1 回答
307 浏览

ruby-on-rails - 在 Rails 6 中更新底层模型时如何使动作缓存过期?

我正在使用似乎可以与 Rails 6 配合使用的动作缓存。

问题是如何在底层模型更新时使缓存过期?

根据Rails 指南

请参阅 actionpack-action_caching gem。有关新首选方法,请参阅 DHH 的基于键的缓存过期概述。

根据Action Caching gem issue,使用 Rails Observer 扫描缓存是可行的。

https://github.com/rails/rails-observers#action-controller-sweeper

但是Rails Observer似乎不适用于 Rails 6。

那么,如何通过after_save回调使缓存过期?