Tag: 缓存

如何触摸HABTM关系

如果您有两个模型,video和类别,并且它们之间具有“has_and_belongs_to_many”关系,那么当其中一个模型发生更改时,如何执行触摸以使缓存无效? 你不能像对待一对多关系那样“触摸”它们。 现在,当我更改类别名称时,属于该类别的video在我使缓存无效之前不知道更改。 我的视图模板显示每个video的类别名称。

没有扫描程序在Rails中清除缓存的正确方法是什么

观察者和扫墓者从Rails 4中删除。酷。 但是缓存和清除缓存的方法是什么呢? 我读到了关于俄罗斯娃娃的缓存。 它很好,除了它只涉及视图渲染缓存。 它不会阻止数据库被击中。 例如: Some HTML code here 您仍然需要从db获取@product以获取其cache_key 。 因此,页面或操作缓存仍可用于防止不必要的负载。 我有时可以使用一些超时来清除缓存,但是如果记录没有改变会怎样? 至少对于扫地机你可以控制这方面。 什么是/将是正确的缓存和清除方法? 谢谢 ! 🙂

Rails – etags与页面缓存(文件缓存)

使用etags / stale会有什么好处?/ fresh_when? 而不是页面缓存(在文件缓存上)? Apache自动处理静态文件的etags,但即使它没有,页面缓存仍然会更好,因为Rails应用程序甚至不会被调用。 那么,在什么情况下我会使用Rails提供的方法(过时?/ fresh_when?)?

Rails:预定任务来预热缓存?

我使用以下内容来缓存使用memcached的缓慢加载页面: caches_action :complex_report, :expires_in => 1.day 控制器操作受Devise身份validation保护。 页面当前在用户第一次请求时被缓存。 然后从缓存中提取当天的后续请求。 这个问题是初始请求需要20-30秒才能加载。 是否可以通过计划任务预先填充缓存? 任何建议非常感谢。

在Rails生产中删除缓存Busting

当我在生产模式下部署rails应用程序时,它会将日期时间字符串作为查询参数附加到所有静态资产URL的末尾。 这是为了防止浏览器在重新部署应用程序后使用资产的旧日期转换副本。 有没有办法让rails使用旧的时间戳来保存自上次部署以来未更改的资产(以及只有未更改的资产)。 我想这样做是为了防止用户重新下载那些没有改变的资产。

为什么我必须重新启动apache才能在浏览器中正确刷新Ruby on Rails视图?

我正在尝试学习一点Ruby。 我在我的Ubuntu机器上安装了Ruby,我正在使用apache。 一切正常,除了刷新视图我必须在控制台中重启apache然后点击ctrl-r,只需按ctrl-r就不会刷新浏览器。 显然有一些缓存正在进行,但是它必须是这样的,即它是Ruby on Rails固有的吗? 我尝试使用Google搜索,但似乎唯一的答案是安装一些冗长的例程。 对于开发而言,这似乎是一种非常繁琐的方式。

Rails缓存数据库查询和最佳实践

我网站上的数据库负载变得非常高,所以现在是时候缓存常见查询,这些查询每小时调用1000次,结果不会发生变化。 例如,在我的城市模型中,我执行以下操作: def self.fetch(id) Rails.cache.fetch(“city_#{id}”) { City.find(id) } end def after_save Rails.cache.delete(“city_#{self.id}”) end def after_destroy Rails.cache.delete(“city_#{self.id}”) end 所以现在,当我第一次点击数据库时,我可以使用City.find(1),但接下来的1000次,我从内存中得到结果。 大。 但是大多数对city的调用都不是City.find(1)而是@ user.city.name,其中Rails不使用fetch但是再次查询DB …这有意义但不完全是我想要它做的。 我可以做City.find(@ user.city_id),但那很难看。 所以我向你们提问。 聪明人在做什么? 这样做的正确方法是什么?

Rails 3.2.4 SQL查询是在find(:all)上缓存结果

我不确定这个系统是否缓存数据,但它有一些缓存的特性。 基本上我搞乱了rails 3.2.4,系统开始没有显示一些结果。 我认为这是露水到我放入代码模型的默认范围,但即使如此,这应该显示所有结果而不是10个中的9个。但是我总是会丢失我创建的新记录以及我创建的任何其他记录那个记录。 我检查我的sqlite3数据库,看看数据是否放在那里,并检查所有连接信息,同时确保缓存已关闭。 但是,如果我更改了任何模型文件或控制器文件然后保存它,我可以显示数据。 甚至不会改变代码只是触摸命令会做的伎俩。 我认为这与范围有关,但我不能完全确定。 我找到的一个解决方案就是回到Rails 3.2.2。 接缝就可以了。 但是我仍然不喜欢像我刚刚介入的那样感到沮丧。 development.rb # Show full error reports and disable caching config.consider_all_requests_local = true config.action_controller.perform_caching = false house.rb class House ‘created_at DESC’, :limit => 50 validates_presence_of :name has_many :roomies end schema.rb ActiveRecord::Schema.define(:version => 20120601204050) do create_table “houses”, :force => true do |t| t.string “name” t.datetime […]

在rails应用程序中缓存对外部API的调用

rails app(4)使用HTTParty调用外部API。 API是只读的。 需要缓存,因为数据不会经常更改(24小时),并且API每小时只允许有限数量的呼叫。 我想我需要某种基于散列的缓存,我将使用“params / sent / to / the / api”作为密钥。 用于缓存的Rails工具似乎只适用于页面,片段或SQL。 我该怎么做才能缓存对外部API的调用?

Rails 3.2:在到期后立即预渲染(烘焙)新的页面缓存?

我有一个应用程序,它使用caches_page进行某些控制器/操作。 为了使缓存失效,我使用扫地机。 总而言之,它是一个标准的解决方案。 但是,因为某些更改可能会导致服务器上出现一些请求(因为推送通知已发出并可能触发客户端设备获取新数据),所以我希望能够预先呈现缓存,因此在请求滚动之前就已经准备好了。当然,我可以等待第一个请求自动写入缓存,但在这种情况下,我知道请求会来,可能会有很多,并且它们可能在附近-同时。 所以我想准备好缓存。 为了增加一些复杂性,更新是通过普通的网页完成的,并在一个标准的,主要是脚手架控制器中处理,而我想要缓存的“页面”是作为API的完全不同的控制器的JSON响应。 那么,我如何从清扫器(或处理缓存过期更新的控制器)触发立即写入的新页面缓存? 另一种说法可能是:如何从一个控制器向另一个控制器发出内部请求? 编辑:结束你做的事情,如下所示。 它不是非常优雅,但它很有效 class ModelSweeper /dev/null &” end end