Rails 3.1 Apacheでは、Asset Pipeline Apache Configを使用する際にPagesSpeedと書かれています。

StackOverflow https://stackoverflow.com/questions/8344186

質問

Rails 3.1ガイドが示唆するものと、キャッシュされた資産の管理のためにGoogle PageSpeedが提案するものとの間に矛盾があることがわかります。

Rails 3.1アセットパイプラインのガイドはソリューションApache Server構成を提供します ここ

Apache設定の顕著なビットは次のとおりです。

<LocationMatch "^/assets/.*$">
  # Some browsers still send conditional-GET requests if there's a
  # Last-Modified header or an ETag header even if they haven't
  # reached the expiry date sent in the Expires header.
  Header unset Last-Modified
  Header unset ETag
  FileETag None
  # RFC says only cache for 1 year
  ExpiresActive On
  ExpiresDefault "access plus 1 year"
</LocationMatch>

すべてが機能しますが、Google PagesSpeedを実行すると、どちらかを設定して「キャッシュバリーターを指定する」必要があると不満を述べています。 Last-Modified また ETag, 、Assetsフォルダー内のすべてのファイルをリストします。

コメントします Header unset Last-Modified PagesSpeedを満たします。

私はさまざまなパゲロードを簡単にテストしましたが、少なくともChromeでは、違いを生むようには見えませんでした - 資産はどちらの方法でもキャッシュされました。

どちらが適切かを知っている人はいますか?

役に立ちましたか?

解決

そのコードは、一貫性の理由で元のRailsヘルパーコードから切り取られ、貼り付けられました。 (コピーしたのは私でした)。

私はチェックしました スティーブ・スーダーズ (ありがとう、スティーブ)これについて、彼は次のように言いました:

あなたがすべき いいえ 永久修正を解除しました。書いた人は、「リロード」をクリックしてテストを行うことでした。 「リロード」をクリックすると、ブラウザに条件付きGETを送信するように明示的に指示します。 (見る これ)

ETAGには同じ問題があります(「リロード」を押すと、条件付きGETが送信されます)。しかし、それはおそらくあなたを意味する別の問題があります したほうがいい 設定されたetag。問題は、ApacheおよびIISのデフォルトのETAG構文が不必要な検証障害を引き起こし、転送されたバイトを無駄にすることです。これらの問題を回避するように構文を構成する必要がありますが、ほとんどの人はETAGを設定するだけで簡単だと感じています。 (見る これ)

Railsドキュメントを更新します!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top