Tag: 缓存

Rails.cache在不同的线程中没有缓存?

我在rails项目中遇到缓存方法结果的问题。 我来到这个模拟两个不同请求的代码: [ Thread.new { puts Rails.cache.fetch(‘a’, expires_in: 2.seconds) { rand } }, Thread.new { puts Rails.cache.fetch(‘a’, expires_in: 2.seconds) { rand } } ] 尝试在rails控制台中执行它。 如果我尝试在控制台中作为输出运行它,我得到不同的数字。 怎么可能? 但是例如这段代码(带睡眠)按预期工作: [ Thread.new { sleep(1); puts Rails.cache.fetch(‘a’, expires_in: 2.seconds) { rand } }, Thread.new { puts Rails.cache.fetch(‘a’, expires_in: 2.seconds) { rand } } ]

ActiveResource +缓存

我正在构建一个应用程序,它通过带有ActiveResource的api来使用模型。 我注意到了 @resource ||= @resource.do a query 不起作用,即如果我在我的控制器中放了类似的东西,我的应用程序仍然会查询api。 因此,我没有使用ActiveRecord的内置缓存。 是时候扩大我的知识和技能基础了。 我找到了这个: http : http : //injectisforwizards.com/blog/read-through-caching-of-activeresource/ ,虽然我还不理解这个100%,但是对于那些执行.find的基于控制器的查询,这似乎有效。 但不是我有任何自定义查询,例如: @current_resource ||= Resource.get(:resource_all, :by_account=>@current_account.account_key) (命中自定义控制器并运行范围,返回集合) 我正在研究这个问题,我会发现发生了什么,但我很好奇是否有人可以告诉我更简单的术语是什么,我可以做些什么来平滑ActiveResource中的缓存更像ActiveRecord,如何我可以定制这个以缓存所有查询等。任何事情都会有所帮助。 编辑: 我发现了这个: https : //github.com/Ahsizara/cached_resource看起来很有前景,但它是新的(并在上面建立了链接)….值得注意的是它似乎没有处理任何类型的集合,但是一个资源很好地查找/缓存。

rails 5 API低级缓存

我对Rails API缓存有点困惑。 我正在使用JSONAPI规范和fast_jsonapi gem并尝试在show动作上缓存车辆本身,如果有像para include=service_notes,service_alerts这样的params include=service_notes,service_alerts那么我也想缓存它们。 这是我最初的方法,但不确定它是否正确。 我有两个主要问题: 对于车辆缓存本身有一个比我的车辆更好的方法= Vehicle.find_cached(params [:id])。 如果车辆已更新,则不使用updated_at,而是使用after save回调来更新缓存。 我只是不知道我是否能以某种方式使用像Rails.cache.fetch([“vehicles”, vehicle], version: vehicle.updated_at)因为它在这里建议: https : //github.com/rails/rails / pull / 29092因为这需要车辆实例。 如您所见, set_vehicle控制器方法非常尴尬。 这个Rails.cache.fetch([‘vehicles’, vehicle, include_params], version: vehicle.updated_at)是否有意义? 我试图根据不同的包括参数缓存查询。 也许它有点矫枉过正,我可以只包括所有内容并将其缓存为: Rails.cache.fetch([‘vehicles’,vehicle,’with_includes’],version:vehicle.updated_at)执行Vehicle.includes(:vehicle_alerts,:service_notes,:service_intervals).find(params [:id])end 在这里处理缓存的正确方法是什么? service_note.rb为service_interval.rb和vehicle_alert.rb设置相同 class ServiceNote < ApplicationRecord belongs_to :vehicle, touch: true end vehicle.rb class Vehicle < ApplicationRecord after_save :update_cache has_many :vehicle_alerts, […]

在不重新查询数据库的情况下重新排序rails中的活动记录?

例如,假设我有一个名为Products的模型,在Products控制器中,我有product_list视图的以下代码来显示已排序的产品。 @products = Product.order(params[:order_by]) 让我们假设在product_list视图中,用户可以使用下拉列表按价格,评级,权重等进行排序。 数据库中的产品不会经常更改。 我很难理解的是,每次用户选择新的order_byfilter时rails是否必须查询,或者rails是否能够以某种方式缓存活动记录以便在服务器端重新排序? 有没有办法写它,所以如果用户排序,rails将不会重新查询结果? (即,如果产品表不经常更改,那么如果用户只想按其他变量排序,则无法进行查询) 谢谢,

Google地理编码API错误:超出查询限制。 – 铁路

我知道这个问题已被提出,但大多数答案都是几年前的,并不是所有的Ruby on Rails项目。 在我目前的项目中,我正在使用Geocode gem(通过Ruby on Rails),任何人都可以按其位置搜索用户(我也使用Carmen gem进行国家/地区,子区域)。 无论如何,我最近一直在收到这个问题( Google Geocoding API error: over query limit. )。 在阅读之后,我发现这很常见。 大多数决议似乎涉及缓存,但其他人说它不能很好/很好地工作。 我想在这里向许多人提出问题,看看各种人认为什么是一个好的解决方案。 理想情况下,将Geocoding gem保留在项目中会很棒,但如果不值得,请告诉我一个替代方案。 如果您知道此问题的解决方案,请告诉我。 谢谢你,只是希望得到这种情况的反馈=) PS:我不使用Google Maps API。 设置项目以便用户输入他们的信息(使用Carmen gem)并键入cit。 该位置是地理编码的,其他人可以键入城市,州/地区以查找该区域内的用户。 编辑 附加问题:当满足此限制时,当用户注册时,这还会导致经度和纬度值为零吗? 由于它是限制,它不会对输入的位置进行地理编码,因此它将值保持为零? 我之前已经发生过这种情况所以我只是想确保这就是为什么= P. 编辑2 – 答案? 在说了一下之后(在下面的评论中),似乎最好的选择是缓存信息。 话虽如此,经过研究,我发现在谷歌缓存时有很多合法性? 我再次使用Google Map API,因此法律方面可能不相关? 这是实现缓存的一个很好的解决方案( https://github.com/codeforamerica/ohana-api/wiki/Customizing-the-geocoding-configuration )? 只是想确保我正确实现缓存方面= P谢谢! 乔

如何在Ubuntu中清除Ruby Phusion Passenger的缓存?

我尝试重新启动apache并且仍然显示缓存的页面,因此必须有某个文件夹。 我没有’公共/缓存’,所以我应该看看其他地方? 是否有可以触发此效果的URL标志?

Rails – 片段缓存未到期

这个让我难过。 我有一个缓存片段的视图: – cache :key=>”news” do %h2 News – etc 我有一个清扫车使用: def expire_home_cache puts “expire_home_cache” expire_fragment(:key => “news”) end 调用清扫器,因为我可以在控制台输出中看到“expire_home_cache”。 但片段没有更新…… 有任何想法吗?

如何使用cache_path使caches_action失效?

我正在使用以下内容缓存索引操作: caches_action :index, :cache_path => Proc.new { |c| c.params } expire_action :action => :index expire_action似乎只在没有任何参数的情况下使索引操作到期。 如何使与索引相关的所有caches_action失效? (这是一个Rails 2.3.5应用程序)

清除ActiveRecord缓存

我正在使用ActiveRecord 3.0(没有rails)构建命令行应用程序。 如何清除ActiveRecord维护的查询缓存?

在Sinatra中缓存响应的最佳方法是什么?

我正在使用我用Sinatra制作的API来构建一个简单的应用程序,它返回一些JSON。 这是相当多的JSON,我的应用程序的API依赖于对其他API的几百个请求。 我可以将结果缓存5天左右,根本没有数据问题。 我只是不是100%确定如何实现缓存。 我如何与Sinatra一起做这件事?