ヒント#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"
に置き換えました。 そして、それは時計のように働きました。
これらのヒントがお役に立てば幸いです。