web-dev-qa-db-ja.com

「「?」のあるリソースURLの一部は、プロキシキャッシングサーバーによってキャッシュされません」

私はクエリ文字列を使用してキャッシュをバーストします。例:mysite.css?201708311009ここで、日付はファイルの最終更新日です。

PingDom で速度テストを実行すると、この結果が得られます。

「?」のあるリソースURLの一部は、プロキシキャッシングサーバーによってキャッシュされません。クエリ文字列を削除し、次のリソースのURLにパラメーターをエンコードします。

どうしたらいいのかわかりません。

一方で、キャッシュの目的全体を無効にする可能性がありますifそれは本当です。しかしながら:

  • 彼らは事実や情報源で主張を裏付けません。
  • どうやら、 Google PageSpeed Insight は同じアドバイスをするために使用されていましたが、停止しました。
  • 主要なCDN(例: maxcdn )アセットバージョンを管理するためにクエリ文字列の使用を推奨し、注意の言葉(例: keycdn )をバックアップしない請求。
  • WordPressはキャッシュの無効化をクエリ文字列に依存しており、Webサイトの25%を強化しています。 (必ずしもベストプラクティスであることを意味するわけではありませんが、それは何かです。)

私の質問は2つあります。

  1. プロキシキャッシングサーバーでキャッシングの問題を引き起こすクエリ文字列の既知のケースは何ですか? (何も見つからない場合、全体はうわさだけです。)
  2. それが問題である場合、ファイル名*を変更する以外に、代替手段がありますか?例:URLフラグメントは受け入れられますか(mysite.css#201708311009)?

*処理に負担がかかるため、余裕がある場合はファイル名の変更を避けます。

3

http://bizcoder.com/caching-resources-with-query-strings から:

スティーブは、クエリ文字列でバージョン番号を使用すると、Squidプロキシキャッシュが静的ファイルをまったくキャッシュしないことを示しています。彼は続けて、これらのファイルをキャッシュするようにSquidを構成できると言っていますが、それはデフォルトの動作ではありません。この情報に基づいて、彼は、静的リソースをキャッシュする場合、クエリ文字列でバージョンを使用しないことを正しく提案しました。

それは2008年8月でした。同年の2008年5月に、Squidはバージョン2.7をリリースし、クエリ文字列を含むURLのキャッシュを拒否しないようにデフォルトの動作を変更しました。

(網羅的ではない)答えは、最も人気のあるプロキシソフトウェアであると信じているものの本当に古いバージョンです。

個人的には、コメントで述べた同じソリューションを使用します。StephenOstermillerは、ファイル名にハッシュを含めるために書き換えルールを使用しますが、常に可能ではありません。クエリ文字列を使用している場合、あまり心配しません。

2
Tim Fountain