问题标签 [sweeper]
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 - Rails 3 缓存:如何使用带有 Action 和 Fragment 缓存的清扫器来使缓存过期?
我正在处理一个显示餐厅菜单的页面。我有 2 个模型:FoodMenu has_many :products 和 Product belongs_to :food_menu。这两种型号我都没有控制器。相反,我使用“pages_controller.rb”来显示每个 FoodMenu 及其具有“菜单”操作的产品:
我想对菜单页面 (localhost:3000/menus) 使用动作缓存,它正在工作,但是当我更新、创建或销毁产品时,我无法让缓存过期。
在“pages_controller.rb”的顶部,我有:
我尝试使用此处的示例代码为 app/sweepers 中的 Product 和 FoodMenu 模型创建单独的清扫器:http://guides.rubyonrails.org/caching_with_rails.html#sweepers ,但这不起作用。然后,我在 SO 条目中读到清扫器应该观察控制器使用的所有模型,所以我认为这意味着我必须创建一个“pages_sweeper.rb”,它观察 Product 和 FoodMenu 模型并过期“菜单”动作。那也没有用。我究竟做错了什么?这是我现在在“pages_sweeper.rb”中的内容:
ruby-on-rails - Rails:在 Sweeper 中访问控制器变量
所以我这里有一些关于 Rails Sweeper 的代码需要修改:
问题是我注意到似乎无法在清扫器中访问 cookie 和参数散列,但在我们公司的某些集成环境中似乎很好。但它在我的本地机器上不起作用。所以我的问题是:
- 如何在 Sweeper 中访问参数/cookie?
- 如果不可能,你会怎么做?
谢谢
ruby-on-rails-3 - 在这种情况下如何调用 Rails 清扫器?
从下面的代码可以看出。我正在缓存show
动作。我在 show action 中也有以下方法View.create_for(@song)
。
我想这样做,当View.create_for(@song)
被调用时,它会清除相应的缓存。
我该怎么办?我是否必须手动调用View
模型中的导轨清扫器?如果是这样,怎么做?
我的控制器:
我的扫地机:
ruby-on-rails - Rails 3.2:到期后立即预渲染(烘焙)新的页面缓存?
我有一个caches_page
用于某些控制器/动作的应用程序。为了使缓存过期,我使用清扫器。总而言之,这是一个标准解决方案。
但是,由于某些更改可能会导致服务器上出现一些请求(因为推送通知已发送出去并可能触发客户端设备获取新数据),所以我希望能够预渲染缓存,所以它在请求到来之前就准备好了。当然,我可以等待第一个请求自动写入缓存,但是在这种情况下,我知道请求会来,可能会有很多,而且它们可能就在附近-同时。所以我想准备好缓存。
为了增加一些复杂性,更新是通过一个普通的网页完成的,并在一个标准的、主要是脚手架的控制器中处理,而我想要缓存的“页面”是一个完全不同的控制器的 JSON 响应,它作为一个 API。
那么,我如何从清扫器(或从处理缓存过期更新的控制器)触发新的页面缓存以立即写入?
另一种说法可能是:如何从一个控制器向另一个控制器发出内部请求?
编辑:最终做了你在下面看到的事情。它不是非常优雅,但它很有效
ruby-on-rails - 缓存:错误的路径和页面没有过期
我遇到了简单缓存的问题(ruby 1.9.2,rails 3.1.3,开发环境):
开发.rb:
扫地机:
控制器:
页面缓存在正确的目录中,并且操作会按应有的方式触发清扫器操作,但页面没有过期,服务器正尝试从默认位置获取缓存的页面。
任何想法为什么?我的配置有问题吗?
ruby-on-rails - 为什么rails找不到我的扫地机?
我的控制器上有:
我尝试在应用程序中创建一个名为 /sweepers 的目录,但没有成功,我尝试在模型内部创建一个 /cache 文件夹(有一个博客以此为例),但没有成功。
我的扫地机是这样的:
结尾
我在尝试启动服务器时得到以下信息:
为什么它不起作用?此外,是否有任何方法可以使仅视图(其呈现方式)的缓存过期。我正在动态生成视图,如果我可以使位于views/formularios/a.html.rb 的视图的缓存过期,这将非常有用
如果人们想知道我在做什么,这很简单。我使用表单生成视图,当我想更新该视图(或它的代码)并且我在生产中时,视图由于缓存而没有更新,所以我每次“更新”表单时都必须手动重置它的缓存.
谢谢。
ruby-on-rails - 您将如何使模型或 Resque 工作人员中的片段缓存过期?
我引用了下面的引用,我可以从中看出一些意义:
“缓存的页面和片段通常取决于模型状态。缓存不关心哪些操作创建、更改或销毁相关模型。因此,使用普通观察者似乎是过期缓存的最佳选择。”
例如。我有一个更新模型的 resque worker。当模型更新/创建时,我需要一个片段缓存过期。这是扫地机做不到的。
但是,使用观察者意味着我需要在模型或 Resque 工作中使用类似的东西:
模型本身不应该知道缓存。这也将打破 MVC 原则,从而导致丑陋丑陋的结果。
ruby-on-rails - Rails 3.1 Sweeper 用于不同命名空间中的控制器方法
全部,
我正在尝试向我的 Rails 3.1 应用程序添加缓存。清扫器位于默认命名空间中,而我的控制器位于 Admin 命名空间中。
例如,我在 Admin 命名空间中有 BooksController,每当这个控制器中的 share 方法我希望图书缓存被清除时。我尝试将此方法命名为 after_books_share,但未调用该方法。
ruby-on-rails-3 - 文章更新时如何使主页缓存过期?
我正在尝试在发布新文章时使用清扫器清除主页索引操作。
主页缓存在开发环境中运行良好,并在 1 分钟后过期。但是,当保存文章时,不会触发清扫器操作。
要么我在某个地方出错,要么需要一种不同的方法来使主页缓存过期。
我的应用程序使用 ActiveAdmin 来更新文章,并使用 Dalli 来更新 Memcache(因为我将使用 Heroku)。
ruby-on-rails - Rails 缓存清扫器在创建时失败
我有一个控制器,其中:
和清扫器:
我得到:
我猜的问题是因为清扫器被称为 after_save,当在新记录上时不会有任何东西可以破坏,即使我已经明确表示它只是在更新或删除时清扫。
(出于示例目的,我显然已将模型重命名为“模型”)