Статьи

Эффект использования Rails-фрагмента кеширования

Rails предоставляет несколько методов кэширования, одним из которых является фрагмент кеша. Кеш фрагментов — это очень простой способ кешировать биты вашего представления.

После проверки того, что ваши запросы делают разумные вещи, следующая часто самая медленная часть стека Rails — это рендеринг представлений, особенно если требуется много генерации URL. Чаще всего вы не хотите кэшировать всю страницу в виде статического HTML и вообще обходить Rails, вместо этого вы хотите сохранить динамическое совершенство веб-приложения и просто кэшировать медленные биты.

Недавно я добавил кеширование фрагментов на домашнюю страницу toolmantim.com . Прежде чем я добавил кеширование фрагментов, мой файл production.log

 
Completed in 0.12385 (8 reqs/sec) | Rendering: 0.10077 (81%) | DB: 0.02210 (17%) | 200 OK [http://toolmantim.com/]

После кеширования фрагмента 2 частей макета приложения и тела домашней страницы мой production.log

 
Completed in 0.00615 (162 reqs/sec) | Rendering: 0.00583 (94%) | DB: 0.00000 (0%) | 200 OK [http://toolmantim.com/]

Увеличение скорости рендеринга в 17 раз по цене двух простых моделей очистки кеша, 4 строк кода контроллера и 6 строк кода представления. Я бы сказал, что это стоило 30 минут, которые потребовались для реализации.

Есть еще несколько вещей, помимо фрагментарного кэширования, которые я мог бы использовать для повышения производительности: оптимизируйте вызов БД, ВЫБИРАЯ только необходимые столбцы, или напишите помощника, который генерирует URL-адреса для статей и комментариев вместо того, чтобы полагаться на Rails, чтобы выяснить это для меня — но я хотел посмотреть, как быстро я смогу сделать страницу, сохраняя ее в стеке Rails и сохраняя гибкость.

Посмотрите на завтрашнюю статью, в которой я покажу, как легко использовать преимущества кэширования фрагментов в своих приложениях.