Rails 3.1 Apacheでは、Asset Pipeline Apache Configを使用する際にPagesSpeedと書かれています。
-
27-10-2019 - |
質問
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ドキュメントを更新します!