开发者

How to cache queries in Rails across multiple requests

开发者 https://www.devze.com 2022-12-26 06:49 出处:网络
I want to cache query results so that the same results are fetched \"for more than one request\" till i invalidate the cache. For instance, I want to render a sidebar which has all the pages of a boo开

I want to cache query results so that the same results are fetched "for more than one request" till i invalidate the cache. For instance, I want to render a sidebar which has all the pages of a boo开发者_StackOverflow中文版k, much like the index of a book. As i want to show it on every page of the book, I have to load it on every request. I can cache the rendered sidebar index using action caching, but i also want to actually cache the the query results which are used to generate the html for the sidebar. Does Rails provide a way to do it? How can i do it?


You can cache the query results using ActiveSupport's cache store, which can by backed by a memory store such as memcached, or a database store if you provide your own implementation. Note that you'll want to use a database store if the cache is shared across multiple Ruby processes which will be the case if you're deploying to Mongrel Cluster or Phusion Passenger.

  • This Railscast has the details


You also could check for your action cache before querying the database in the controller.

0

精彩评论

暂无评论...
验证码 换一张
取 消