Заключительная статья по оптимизация Ruby on Rails приложения.
Совет #1: Приберите ваш статический контент
Совет #2: Уберите все лишнее
Совет #3: Кэшируйте всю страницу
Совет #3: Кэшируйте всю страницу
Этот, последний совет, является наиболее эффективным. Веб-сервер кэширует страницу полностью, а затем отдает лишь статический контент. Что бы начать работать с caches_page достаточно просто посмотреть замечательный railscasts.
Необходимо помнить что после полного кэширования страницы, она будет отображаться одинаково для всех пользователей, не будет производиться не каких проверок или запросов к базе. Поэтому следует избавиться в странице от всех конструкций вида:
Вы все ещё можете использовать JavaScript для того чтобы показывать или скрывать код для зарегистрированных пользователей. Вот небольшой пример:
Так же, вы больше не сможете полноценно использовать
Ставим:
В ApplicationController пишем:
В контроллере:
А в layout:
Теперь все flash сообщения будут записываться в Куки. Кстати для работы этого плагина необходимо поставить gem json, но в моей Ubuntu 8.10 с этим возникли проблемы, этот гем упорно не хотел вставать, как потом выяснилось подобная проблема не только у меня. ешил я эту проблему так, поставил
Надеюсь эти советы вам помогли.
Совет #1: Приберите ваш статический контент
Совет #2: Уберите все лишнее
Совет #3: Кэшируйте всю страницу
Совет #3: Кэшируйте всю страницу
Этот, последний совет, является наиболее эффективным. Веб-сервер кэширует страницу полностью, а затем отдает лишь статический контент. Что бы начать работать с caches_page достаточно просто посмотреть замечательный railscasts.
Необходимо помнить что после полного кэширования страницы, она будет отображаться одинаково для всех пользователей, не будет производиться не каких проверок или запросов к базе. Поэтому следует избавиться в странице от всех конструкций вида:
<%= ... if logged_in? %>Вы все ещё можете использовать JavaScript для того чтобы показывать или скрывать код для зарегистрированных пользователей. Вот небольшой пример:
var CurrentUser = {
loggedIn: false,
author: false,
admin: false,
init: function() {
this.loggedIn = Cookie.get('token') != null;
this.admin = Cookie.get('admin') != null;
}
};
var Application = {
init: function() {
CurrentUser.init();
},
onBodyLoaded: function() {
if (CurrentUser.loggedIn) {
$$('.if_logged_in').invoke('show');
$$('.unless_logged_in').invoke('hide');
}
if (CurrentUser.admin) {
$$('.if_admin').invoke('show');
}
}
};
Так же, вы больше не сможете полноценно использовать
<%= flash[:notice] %>. Однако это не проблема, есть замечательный плагин Cacheable FlashСтавим:
ruby script/plugin install svn://rubyforge.org/var/svn/pivotalrb/cacheable_flash/trunkВ ApplicationController пишем:
include CacheableFlashВ контроллере:
flash[:notice] = "Welcome to Eternity" if current_userА в layout:
<div id="error_div_id" class="flash flash_error"></div>
<div id="notice_div_id" class="flash flash_notice"></div>
Теперь все flash сообщения будут записываться в Куки. Кстати для работы этого плагина необходимо поставить gem json, но в моей Ubuntu 8.10 с этим возникли проблемы, этот гем упорно не хотел вставать, как потом выяснилось подобная проблема не только у меня. ешил я эту проблему так, поставил
ruby-json, и заменил в /vendor/plugins/cachable-flash/init.rb строчку gem "json" на gem "ruby-json". И все заработало как часы.Надеюсь эти советы вам помогли.
