Railsアプリケーションを高速化する3つの簡単なヒント、パート3

Ruby on Railsアプリケーションの最適化に関する最終記事。

ヒント#1:静的コンテンツを取得する

ヒント#2:クリーンアップ

ヒント#3:ページ全体をキャッシュする



ヒント#3:ページ全体をキャッシュする



この最後のヒントが最も効果的です。 Webサーバーはページを完全にキャッシュし、静的コンテンツのみを提供します。 caches_pageの操作を開始するには、すばらしいrailscastsをご覧ください



ページを完全にキャッシュした後は、すべてのユーザーに対して同じように表示され、チェックやデータベースクエリは実行されないことに注意してください。 したがって、ページ内のフォームのすべての構造を<%= ... if logged_in? %>



する必要があります。 <%= ... if logged_in? %>



<%= ... 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







そしてレイアウト:

<div id="error_div_id" class="flash flash_error"></div>

<div id="notice_div_id" class="flash flash_notice"></div>









これで、すべてのフラッシュメッセージがCookieに記録されます。 ちなみに、このプラグインを機能させるには、gem jsonをインストールする必要がありますが、Ubuntu 8.10ではこれに問題がありました。このgemは頑固に立ち上がりたくありませんでした。 このような問題を解決し、 ruby-json



インストールし、/ vendor / plugins / cachable gem "ruby-json"



flash / init.rbの行gem "json"



gem "ruby-json"



に置き換えました。 そして、それは時計のように働きました。



これらのヒントがお役に立てば幸いです。



All Articles