Ruby On Rails in UA Icon_home Главная Add to bookmarks Translate translate Profile Войти
Регистрация Форум Блоги Пользователи Ресурсы Список джемов      Поиск   

Затегированы темы

Cache in rails 2.0.2

Date2008-05-29 UserRuslan Voloshin Commentкоментарии 2

Rails method cache

Если вы хотите кешировать меню навигации, вы можете использовать следующий код:

 <% cache do %>
<%= render :partial => "menu" %>
<% end %>

Для статическоогго контента

  <% cache do %>

Hello users! Welcome to our website!


<% end %>

И для статического контента совмещенного с RHTML блоками.

  <% cache do %>
Topics:
<%= render :partial => "topics", :collection => @topic_list %>
Topics listed alphabetically
<% end %>

Что бы очистить закешированый блок надо вызвать метод expire_fragment

expire_fragment(:controller => "topics", :action => "list")

Кеширование врагментов может проходить может быть настроено разными способами

  ActionController::Base.fragment_cache_store = :memory_store
  ActionController::Base.fragment_cache_store = :file_store, "/path/to/cache/directory"
  ActionController::Base.fragment_cache_store = :drb_store, "druby://localhost:9192"
  ActionController::Base.fragment_cache_store = :mem_cache_store, "localhost"
  ActionController::Base.fragment_cache_store = MyOwnStore.new("parameter")

В частности в памяти, на диске, на drb сервере.

Кешироване страниц

Страницы кеширутся как HTML файлы и выдаются минуя Action Pack. Это может увеличить скоростьотдачи до 100 раз, по сравнению с генераций динамических страниц. К сожалению такая производительность вохмодна только для страниц которые одниковы для всех пользователей. Но Системы управления контентом - в том числе блоги и вики у которых есть много страниц, со специфическими частями для индивидуального использования, где люди манипулируют их собственными данными зачастую являются менее вероятными кандидатами для такого кеширования.

Такое кеширование происходит на уровне контролера

 class WeblogController < ActionController::Base     caches_page :show, :new
end

Истечение срока действия кэш-памяти выполняется путем исключения из кэша файла, который приводит к не произвольной регенерации нового, когда кэш не востановил файл то он генерирует другой.

  class WeblogController < ActionController::Base
def update
List.update(params[:list][:id], params[:list])
expire_page :action => "show", :id => params[:list][:id]
redirect_to :action => "show", :id => params[:list][:id]
end
end

Настройка директории для хранения страниц кеша

Директория кеширования должна быть в document root для веб сервера и ее можно натсроить используя Base.page_cache_directory = "/document/root". Для rails это дректория уже установлена RAILS_ROOT + "/public".

До включания частичного рендеринга первой страницы.

 Completed in 0.17490 (5 reqs/sec) | Rendering: 0.15869 (90%) | DB: 0.00000 (0%) | 200 OK [http://rubyclub.com.ua/]
Включил частичное кеширование левого блока, что составляет не самую большую часть страницы. Но дало прирост на 15%  запросов в секунду

Completed in 0.13146 (7 reqs/sec) | Rendering: 0.12321 (93%) | DB: 0.00000 (0%) | 200 OK [http://rubyclub.com.ua/]

Rss
Ключевые слова:
Гости: 213 Онлайн: Евгений Хлобыстин, Roman V. Babenko,
Rambler's Top100
О проекте по всем вопросам обращайтесь на support
Rubyclub.com.ua Copyright © 2007 - 2008