问题标签 [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.
ruby-on-rails - 启用动作缓存后,format.js 不会操作 dom
注意:我在这里提出我正在做的逻辑。
我在做什么:
想想我们列出产品和分页的基本索引操作。现在使用 remote-true 选项,我启用了基于 ajax 的分页。到目前为止,一切都很好。看一下示例代码。
产品控制器:
索引.html.erb
索引.js.erb
所以有什么问题:
现在我想对此启用动作缓存。但是 index.js.erb 文件并没有操作 DOM。如果我删除了 remote-true 功能,那么缓存就可以正常工作。
对于动作缓存,我在控制器顶部添加了这一行:
有什么建议么?
更新:
问题是 jquery 代码没有执行。从这个问题
我发现出了什么问题。jQuery 实际上用 a 包围传入的脚本,以便浏览器评估传入的代码。但是缓存机制只是将代码保存为文本,当再次请求时,它会将代码作为文本返回,但不对其进行评估。因此,需要明确地评估代码
但是这个问题怎么解决??
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
ruby-on-rails - Rails 动作缓存 RSpec 测试失败
我有一个规范,可以在禁用缓存和启用缓存时测试动作缓存。似乎测试执行的顺序会影响它们是否通过。
当以上述顺序运行测试时,最后一个测试失败,因为 cache_store 在最后一个期望中不存在。我很难理解为什么无缓存测试会影响缓存测试。有谁知道出了什么问题?
ruby-on-rails-3 - Rails 动作缓存过期后刷新
我希望过期,然后使用可公开访问的端点刷新控制器操作的缓存。
目前在我的应用程序中,/all 返回缓存的 json,并且 /update 使缓存过期。您可以在下面看到现有的相关代码。我想做的不仅是使缓存过期,而且还强制刷新。所以,我的问题是:
有没有办法在动作缓存过期后启动它的刷新,而不点击动作?
如果答案是否定的(正如我开始怀疑的那样),那么最好的方法是什么?我要求更新操作返回 HTTP 200 状态,而不是 301 重定向,因此仅重定向到 /all 不是一个选项。
供应商控制器
ruby-on-rails - 未为 rails 引擎中的控制器定义 caches_action
我有一个 Rails4 应用程序,一个MyEngine
带有控制器的安装 rails 4 引擎MyController
我在控制器中定义了多个缓存操作,如下所示,
我还在我的 gemspec 中包含了 gemactionpack-action_caching
版本1.0.0
当我尝试点击任何指向我的路线时,MyController
我收到以下错误:
我正在使用开发环境,所以我还更改了环境的配置以启用缓存:
我已经尝试过改变一堆东西,比如将这个块添加到engine.rb
into_prepare
和initializer
block 中。
我也试过设置config.action_caching = true
。engine.rb
我确定我错过了一些非常基本的东西,只是无法找出什么!
编辑1
也尝试caches_action
在应用程序中添加操作。它抛出相同的错误。
为了调试,我在里面添加了一些打印语句gem
在这一行require 'action_controller/action_caching'
,它true
在服务器启动时打印。
那就更莫名其妙了!
ruby-on-rails - 使用自定义 cache_path 为动作缓存过期缓存
我已经使用以下语法在 rails 3.2 中实现了动作缓存
但是,我希望每当更新缓存时,所有版本的设备类型的操作缓存都会过期。我在控制器中使用以下语法。
expire_action( :action => :show)
可悲的是,上面的代码没有按预期工作。坦率地说,我是使用缓存的新手,非常感谢任何帮助。
ruby-on-rails - 如何在活动管理员中实现页面缓存或动作缓存
我们在我们的应用程序中使用活动管理员。我有大量数据等需要管理。我想在活动管理员中实现页面缓存/动作缓存,并希望在我的特定调用中使片段过期。我不介意在索引页面上显示一段时间的陈旧数据。有人可以提供一些基本示例如何在活动管理员中实现 page_caching/action_caching 吗?
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),但没有成功。我的文件已经恢复到原来的样子,所以我不知道我做错了什么。
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
回调使缓存过期?