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"に置き換えました。 そして、それは時計のように働きました。

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

Source: https://habr.com/ru/post/J51042/


All Articles