1

Ruby On Rails アプリケーションの 1 つを本番環境に置いたところ、ロード時間が非常に遅いことに気付きました。

私のアプリケーションは、apache サーバーでパッセンジャーを使用して railsplayground.net で実行されます。

pingdomwebpagetestなどのいくつかのサイトを調べました が、アプリケーションで気付いた主な問題は、次のように、javascript および css ファイルでキャッシュが機能していないことです。 ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

キャッシュ方法に関するあらゆる種類のガイドを読んでみましたが、結果は得られませんでした。

これをヘッダーファイルに入れました:

  <meta http-equiv="cache-control" content="public" />
  <meta http-equiv="last-modified" content="Sun, 23 Sep 2012 08:00:00 GMT" />

これは私の production.rb でオンになっています:

config.action_controller.perform_caching = true
4

1 に答える 1

4

これらの項目が不満を言っているのは、静的アセット(images、css、javascript)を提供しているときに、Webサーバーがブラウザーにキャッシュ可能であることを通知していないため、必要以上に頻繁に再フェッチされることです。

アセットパイプラインを使用する場合(ご存知のとおり)、アセットファイル名にはコンテンツのmd5チェックサムが含まれているため、非常に長い有効期限を設定できます。ファイルを変更すると、チェックサムがに変更され、ファイルブラウザのリクエストに別の名前。

通常、これはapacheの構成で、仮想ホストのブロックにこのようなものを貼り付けることによって行います。

<Location /assets>
      ExpiresActive on
      ExpiresDefault "access plus 1000 days"
</Location>

また、多くの時間を節約できるjavascriptおよびcssファイルのgzipをオンにする価値があります。これを行うには、仮想ホストに次のようなものを追加します。

<Location />
  AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript text/css  application/javascript application/json text/javascript
</Location>

古いブラウザはこれをサポートしていない可能性がありますが、これは非常に広くサポートされているため、体系的にオンにします(IE4やNetscapeNavigator 4でもこれをサポートしています)

于 2012-09-23T15:10:18.860 に答える