Antes de tudo, estou desenvolvendo uma app que renderiza algumas coisas “a quente” nas views, só que isso tá impraticável:
Processing ComputersController#index (for 127.0.0.1 at 2009-06-04 07:15:14) [GET] Computer Load (1.6ms) SELECT * FROM `computers` ORDER BY price ASC LIMIT 0, 5 Computer Columns (0.9ms) SHOW FIELDS FROM `computers` SQL (0.2ms) SELECT count(*) AS count_all FROM `computers` Rendering template within layouts/computers Rendering computers/index Completed in 2546ms (View: 2531, DB: 3) | 200 OK [http://127.0.0.1/computers]
Eu preciso cachear as coisas a quente. Buscando informações sobre caching no Rails, comecei com o seguinte:
- config/environments/development.rb : setar o config.action_controller.perform_caching para true
- app/controllers/computers_controller.rb : setar o caches_page :action (index, no meu caso)
Reiniciei o Mongrel, dei um reload na página e:
Processing ComputersController#index (for 127.0.0.1 at 2009-06-04 07:21:54) [GET] Computer Load (1.6ms) SELECT * FROM `computers` ORDER BY price ASC LIMIT 0, 5 Computer Columns (1.0ms) SHOW FIELDS FROM `computers` SQL (0.2ms) SELECT count(*) AS count_all FROM `computers` Rendering template within layouts/computers Rendering computers/index <strong>Cached page: /computers.html (0.7ms)</strong> Completed in 2480ms (View: 2467, DB: 3) | 200 OK [http://127.0.0.1/computers]
Bem mais rápido
Navegando entre as outras páginas (thanks to will_paginate rails plugin), quem disse que funcionava algo? O resultado é a mesma página que carreguei da primeira vez, isto para todas as páginas (de 1 a 348). Ou seja, não deu certo habilitar o caching.
Update: o que eu precisava era de fragment caching.
Posts relacionados:

No comments yet
Deixe Seu Comentário