Tag: 缓存

Rails + Amazon RDS:延迟问题

我有一个应用程序,其数据库正在迁移到亚马逊RDS。 由于RDS和我们的服务器之间的查询延迟(因为查询只有30秒的加载时间),我的性能大幅下降。 没有明确的缓存,可以对请求进行更多优化,但这仍然比使用本地数据库慢10倍。 我预计这种性能会下降吗? 如果是,是否有办法使用具有与本地数据相似的云数据库?

为什么Rails在托管在VM和Samba共享上的代码库时缓存视图文件

我有以下设置: 我的本地计算机(OS X)上的代码作为Samba共享共享 在Parallels中运行的Ubuntu VM安装共享 在开发模式下运行Rails 2.1(通过Mongrel,WEBrick或乘客),如果我对我的视图进行更改,他们不会更新,而不必我踢服务器。 我尝试过切换到NFS共享,但我遇到了同样的问题。 我认为这是某种Samba缓存问题,但autotest会立即获取文件的更改。 注意: 这不是渲染缓存或模板缓存,并且在开发配置中未定义config.action_view.cache_template_loading。 检查代码库直接到VM不会显示相同的问题(但我不想这样做) 直接在VM上编辑视图文件无法解决此问题。 更改后触摸视图文件会导致更改出现在浏览器中。 我还注意到VM中的时钟快一小时,将其更改为正确的时间没有任何区别。

是否可以以编程方式清除Rails 3布局和视图缓存?

我有一个基于Rails 3的CMS,允许用户创建和修改布局和视图。 这些布局和视图与框架中内置的布局和视图相同,仅由某些附加function的模型支持。 我想解决的问题是,这些模板文件在公共端被访问时会被缓存,因此除非重新启动服务器,否则无法看到布局或视图中的更改。 在禁用缓存的开发模式下不会发生这种情况,但显然在生产中关闭模板缓存对性能来说并不是很好。 清除memcache似乎没有办法。 是否有可能以编程方式清除生产中的布局和视图缓存,可能还有像重载这样的东西! 就像我们在控制台中一样? 或者每次有人想要调整其中一个布局或视图时,我都不得不重新启动Passenger(可能使用此线程中的方法: Rails Cache Clearing )? 请注意,我不是指清除公共页面所依赖的页面和操作缓存,并且工作得很好。

带Memcache的Rails返回错误的缓存对象?

我有一个相当大的Rails应用程序,它在单独的服务器上使用memcached作为其缓存存储。 问题是我在生产环境中随机获取错误,这似乎表明memcached返回了一个不正确的对象。 例子: 在此示例中, current_site是一个帮助方法,它访问Site模型上使用Rails.cache缓存模型的方法 ActionView::TemplateError in ListingsController#edit undefined method `settings’ for # On line #12 of app/views/layouts/site.html.erb 9: 10: 11: 12: 13: <meta name="verify-v1" content="” /> 14: 15: 与…形成对比 ActionView::TemplateError in ApplicationController#not_found undefined method `settings’ for # On line #12 of app/views/layouts/site.html.erb 9: 10: 11: 12: 13: <meta name="verify-v1" content="” /> 14: 15: 两者都应该返回Site模型! […]

Rails Cache Key生成为ActiveRecord :: Relation

我正在尝试生成一个片段缓存(使用Dalli / Memcached存储)但是密钥是使用“#”生成的,因为Rails似乎没有认识到存在缓存值并且正在命中数据库。 我在视图中的缓存键如下所示: cache([@jobs, “index”]) do 控制器有: @jobs = @current_tenant.active_jobs 使用这样的实际Active Record查询: def active_jobs self.jobs.where(“published = ? and expiration_date >= ?”, true, Date.today).order(“(featured and created_at > now() – interval ‘” + self.pinned_time_limit.to_s + ” days’) desc nulls last, created_at desc”) end 查看rails服务器,我看到缓存读取,但SQL查询仍然运行: Cache read: views/#/1-index Read fragment views/#/1-index (1.0ms) (0.6ms) SELECT COUNT(*) FROM “jobs” […]

使用cache_digests与XML构建器?

有没有办法在Rails 4(cache_digests)中利用XML的新缓存策略? 我想我可以使用xml.erb视图,但我更喜欢xml.builder视图的简洁性。 有没有办法以这种方式使用cache_digests?

Rails从模型中过期片段缓存

我正在使用我的Rails项目中的缓存,并希望使特定URL的缓存失效。 我得到以下命令来过期对应于传递的URL的片段: ActionController::Base.new.expire_fragment(“localhost:3000/users/55-testing-devise/boards/”) 我很困惑将这些代码放在我的Rails项目中,以便在添加文本字段中的url并单击expire按钮后立即执行。

Rails关联 – 改变值的问题,以及过多的缓存!

假设我有一个卡片游戏应用程序,其中包含一个Player模型,它有一个actions整数列; 和Card模型。 玩家可以玩他们拥有的牌,这需要一个动作; 一张特定的牌在播放时会发出两个动作。 如果我按如下方式编码: class Player < ActiveRecord::Base has_many :cards def play_card(card) raise "Not yours!" unless cards.include? card self.actions -= 1 card.play save! end end class Card < ActiveRecord::Base belongs_to :player def play player.actions += 2 end end …然后, Player#play_card的净效果是将actions减少1.我发现两个更改的唯一方法适用于同一个对象,从而导致1个操作的净增量,是定义函数像这样: class Player < ActiveRecord::Base has_many :cards def play_card(card) raise "Not yours!" unless cards.include? card […]

Rails 3开发环境保持缓存,即使没有缓存?

我在开发模式下有一个rails 3应用程序,它不会加载我运行webrick时所做的任何更改。 我三重检查了我的development.rb的设置,并确保我在开发模式下运行。 config.cache_classes = false config.action_controller.perform_caching = false 我还检查了我的tmp目录以确保缓存文件夹是空的 – 我还没有在网站上进行任何缓存并且从未打开过缓存。 我猜测它与文件的加载问题。 我也在webrick运行,然后安装了mongrel,问题仍然存在。 我猜测我遇到配置问题,不,我没有看到其他人发布这样的问题。 我还缺少什么? 编辑:看起来我的视图帮助程序不能自动加载 – 默认情况下不是帮助程序应该可以在rails 3中重新加载?

Django中的cache.fetch?

Django缓存有一个类似于Rails的cache.fetch的方法吗? ( http://api.rubyonrails.org/classes/ActiveSupport/Cache/Store.html#M001023)rails cache fetch的工作方式如下: cache.fetch(“my_key”){ //返回我想要放在my_key中的内容,如果它是空的 “SOME_VALUE” } 它很有用,因为它会检查缓存,并返回缓存的值(如果存在)。 如果没有,它将在缓存中存储“some_value”,然后返回“some_value”。 在Django中是否有相同的function? 如果没有,如果我要实现这样的function,那么Python的语法会是什么样子?