0

ページを変更するたびに、Rails アプリケーションの application.css & .js & fonts ファイルが常に再ダウンロードされることに気付きました。これにより、サーバーにかなりの負荷がかかり、読み込み時間が遅くなります。

キャッシングを最適化する方法、できれば私が従うことができるベストプラクティスについて、ここで誰でも私に勧めることができますか?率直に言って、私は展開の最適化の経験があまりないからです。

ps: http://guides.rubyonrails.org/caching_with_rails.htmlのいくつかのヒントを既に読んで実行しましたが、アセットはまだ再ダウンロードされます..

編集:私のnginx構成

upstream example_com {
  server unix:/tmp/example_com.todo.sock fail_timeout=0;
}

server {
  listen 80;
  server_name example.com;

  root /var/www/example.com/current/public;
  try_files $uri/index.html $uri @example_com;

  location @example_com {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://example_com;
  }

  location ~ ^/assets/ {
    expires 1y;
    add_header Cache-Control public;

    add_header ETag "";
    break;
  }

  client_max_body_size 4G;
  keepalive_timeout 5;
  error_page 500 502 503 504 /500.html;

  access_log /var/www/example_com/shared/log/access.log main;
  error_log /var/www/example_com/shared/log/error.log info;
}

キャッシュ ヘッダー、firebug から取得:

Response Headers From Cache
Cache-Control   max-age=31536000, public
Content-Encoding    gzip
Content-Type    application/x-javascript
Date    Wed, 04 Jul 2012 09:45:51 GMT
Expires Thu, 04 Jul 2013 09:45:51 GMT
Last-Modified   Wed, 04 Jul 2012 05:52:38 GMT
Server  nginx/1.2.1
Vary    Accept-Encoding
4

1 に答える 1

0

アセットをコンパイルしている (rake assets:precompileまたは heroku のような環境にデプロイしている) 場合、これらは のような単なる静的ファイルになりapplication-8675309.....js、Web サーバーによって提供される必要があります。使用している Web サーバーが public/assets ディレクトリ内のファイルを提供することを知っていることを確認してください。これを実現するためのサンプル サーバー構成については、http: //guides.rubyonrails.org/asset_pipeline.html#in-productionを参照してください。

于 2012-07-04T07:56:29.977 に答える