1

Rails 3.xでは、キャッシュを手動でプリコンパイルしたいので、モデルインスタンスと静的HTMLのビューでフラグメントキャッシュを使用します。

ページが要求されると、Railsはキャッシュに遅延してデータを入力します。その結果、最初のロードでのロード時間が遅くなります。

したがって、このサンプルコードを考えると:

  <% cache("index_chart") do %>
    <%= high_chart("chart", @h) %>  
  <% end %>

キャッシュにRubyを手動で設定するにはどうすればよいですか?

4

1 に答える 1

3

おそらく最も簡単な方法は、キャッシュをカバーするさまざまなURLにGETリクエストを発行するシェルスクリプトを作成することです。これは、キャッシュウォーミングとも呼ばれます。

簡単なセットアップは、アプリケーションでscripts / cache_warmerというシェルスクリプトを作成し、サーバーのコマンドライン、デプロイスクリプト、またはresqueなどのバックグラウンドプロセッサから手動でトリガーできます。

# Sample scripts/cache_warmer

GET http://localhost/
GET http://localhost/some_other_page

もう少しインテリジェントにしたい場合の代替手段。リソースのメンバーURLをヒットできるなど、rakeタスクを使用することです。

# lib/tasks/cache_warmer.rake

task :cache_warmer => :environment do
  Resource.all.each do |resource|
    Net::HTTP.get_response("http://localhost/resources/#{resource.id}")
  end
end

もちろん、これは単なる基本的な例です。実際のコードは、ヒットしようとしているルートとその数によって異なります。同時実行性を高めるためにマルチスレッドのオプションを検討するか、代替の「ワーカー」サーバーを使用してからの要求を実行することをお勧めします。これがどれほど複雑になるかという点では、空は限界です。セットアップによって異なります。

于 2013-02-25T09:53:16.403 に答える