Tag: 缓存

rails4缓存命名约定

我有一个rails 4 app。 我必须以某种方式区分不同的缓存键,但不知道命名约定。 第一个例子: 我有一个带index , completed_tasks和incoming_tasks动作的任务模型。 由于分页,A具有相同的实例名称( @tasks )。 目前,缓存键的名称如下所示。 我的问题:1。缓存密钥结构是否足够好? 2.将密钥的各个部分放在数组中的顺序是否重要? 例如[@tasks.map(&:id), @tasks.map(&:updated_at).max, ‘completed-tasks’]优于[‘completed-tasks’, @tasks.map(&:id), @tasks.map(&:updated_at).max] ? completed_tasks.html.erb tasks.html.erb incoming_tasks.html.erb 第二个例子: 我也有russian-doll-caching的命名惯例的问题: products/index.html.erb _product.html.erb …. 这个版本是否足够好,或者我总是应该在外部和内部缓存键数组中放入一些字符串,以避免在其他页面上使用类似命名的缓存键出现问题。 例如,我计划将放在profile#show页面上,这与我的示例中的内部缓存完全相同。 如果密钥必须不同,则rails的约定是将内部缓存键命名为内部?

对于具有动态标头的大部分静态页面,最好的Rails缓存选项是什么

我有一组基本上静态的页面,除了它们的布局包含更加动态的标题之外,我很乐意在相对较长的时间内页面缓存。 到目前为止,最有希望的想法似乎是使用没有布局的动作缓存: – class SomethingController false end 然后至少缓存页面的主要内容。 那有意义吗? 或者我会更好地做其他事情,例如片段缓存,服务器端包含等等?

使用rails缓存时使用rails处理redis maxmemory情况

当redis达到’maxmemory’状态时,它会让客户端读取,但不会写入。 这当然会导致致命的错误……有没有办法让Rails处理缓存读取或写入错误,所以如果缓存中出现不好的事情(可用性,读取,写入等),它将继续作为如果缓存被设置为“关闭”?

rake任务无法访问rails.cache

我想从一个将远程天气数据存储在rails缓存中的cron作业调用rake任务。 但是,我必须在这里做一些非常错误的事情,因为我无法通过无数无结果的搜索找到任何解决方案。 假设我定义并调用此任务 namespace :weather do desc “Store weather from remote source to cache” task :cache do Rails.cache.write(‘weather_data’, Date.today) end end 我收到了错误 Anonymous modules have no name to be referenced by 这让我相信rails缓存不可用。 从rake文件输出Rails.class给了我Module但Rails.cache.class再次返回上面的错误。 我需要在这里加一些东西吗? 我在互联网上绝望吗? 🙂 提前致谢。

带有expires_in的Rails.cache.fetch只有在新值不为nil时才会过期

我想做一个简单的Rails.cache.fetch并在大约10分钟后过期。 缓存中充满了来自外部API的json数据。 但是,有时无法访问外部API。 因此,当缓存过期并尝试获取新的json数据时,缓存内容将变为无效。 如果fetch_json返回有效数据,我怎样才能使Rails.cache.fetch只对EXPQRE缓存? 但是,如果收到新的有效数据,缓存应在10分钟后过期。 这是我尝试这样做的方式,但它不起作用。 更好的代码突出显示在这个要点: https : //gist.github.com/i42n/6094528 任何提示我如何才能完成这项工作? module ExternalApiHelper require ‘timeout’ require ‘net/http’ def self.fetch_json(url) begin result = Timeout::timeout(2) do # 2 seconds # operation that may cause a timeout uri = URI.parse(url) http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Get.new(uri.request_uri) response = http.request(request) return JSON.parse(response.body) end return result rescue # […]

如何在Rails中重置我的资产管道?

这是一个奇怪的问题,但是我部署到了生产环境,由于缓存问题,它不会更新我的新CSS更改。 我试过这个: bundle exec rake assets:precompile 但那会回来: rake aborted! Don’t know how to build task ‘assets:precompile’ 啊,所以我必须错过我的application.rb中的链轮。 我尝试了这个链接上的所有内容: 如何构建任务’资产:预编译’ 。 并且每个解决方案都会导致加载错误,因为找不到它指出的项目。 我该怎么办? 轨。 3.0.5

使用Rails 3.2缓存未命中和开发中的页面缓存 – 还有其他人吗?

在开发模式下使用Rails 3.2,我试图测试一些简单的页面缓存。 pages_controller.rb class PagesController < ActionController::Base caches_page :index, :show def index @pages = Page.all end def show @page = Page.find(params[:id]) end end development.rb config.action_controller.perform_caching = true application.rb中 config.action_controller.page_cache_directory = File.join(Rails.root, ‘public’) 当我测试这个设置时,似乎正常处理这些操作,并且页面缓存按预期编写。 但是,后续请求报告了以下两件令我困惑的事情: 它似乎错过了缓存,但…… 之后的请求似乎没有加载控制器,运行任何查询等,导致我相信它从缓存加载DID。 这是第一次请求时日志输出的内容,然后是五次重新加载: Started GET “/pages” for 127.0.0.1 at 2012-02-12 21:01:24 -1000 Processing by PagesController#index as HTML Page Load (0.2ms) SELECT […]

使用缓存时Rails字符编码问题

我使用rails fragemnet缓存来缓存一些html。 以下是我的代码 ‘pageui’, :action_suffix => “#{@link.id}_tags”) do %> 0 %> tag.id), :title => tag.name, :target => “_blank” %> Still no tag for this Page. 我遇到了一些奇怪的问题。 第一次没有缓存的fragement时,它会出现错误“不兼容的字符编码:UTF-8和ASCII-8BIT” 但后续请求工作正常。 只有第一个请求才会出错。 任何提示?

如何从后台进程写入部分缓存并从缓存中读取部分并在rails中呈现它?

与我之前询问过的问题相关如何将数据库密集型页面存储在rails中的后台进程中 我想每15分钟从后台进程写一个部分缓存。 当用户请求进来时,我可以从缓存中读取部分并呈现它,并且永远不会明确地使它过期。 有没有办法真正做到这一点? 谢谢,

轨。 在开发模式下预加载类

在开发模式下预加载Rails模型的正确方法是什么? 背景:Rails 2.2,memcahe as cache store。 当Rails首先在生产模式下启动时,它会预加载并缓存所有模型。 在开发模式下,它使用laizy加载。 这就是为什么我们将任何模型存储到rails缓存中,例如,在app的下一个loadind上的Rails.cache.write(“key”,User.find(0)),当我们尝试执行Rails.cache.read(“key” )memcache fire,即User是未知的类/模块。 在这种情况下,预加载课程的正确方法是什么?