Cloudflare:URLにクエリ文字列がある場合に静的HTMLをキャッシュする


10

CloudFlareの「新しいユーザー」に関する簡単な質問:

背景:オリジンサーバーによって提供されるHTMLページは変更されません。すべての動的コンテンツは、ページがユーザーのブラウザーにロードされた後、JavaScriptを介してダウンロードされます。JavaScriptによって派生した動的コンテンツは、URLのクエリ文字列に一部依存しますが、クエリ文字列自体は、最初にダウンロードされたHTMLコンテンツには影響しません。したがって、次のURLはすべて、ブラウザでJavaScriptが作用する前に、オリジンからまったく同じHTMLを生成します。

https://www.example.com/private/my-investments?portfolioID=296

https://www.example.com/private/my-investments?portfolioID=325

https://www.example.com/private/my-investments?portfolioID=319

質問:CloudFlareがデフォルトでHTMLをキャッシュしない場合、https://www.example.com/private/my-investments?[anyValue]の単一のキャッシュされたコピーがすべてのユーザーに返されるようにページルールを作成するにはどうすればよいですか??これが私が試したものです:

「すべてをキャッシュ:」「すべてキャッシュ」ディレクティブを使用すると、HTMLがキャッシュされますが(良好)、クエリ文字列全体がキャッシュキーの一部として使用されます(不良)。したがって、ユーザーが次のURLにアクセスした場合...

https://www.example.com/private/my-investments?portfolioID=296

...そして、10秒後に、次のように、別のクエリ文字列で同じURLにヒットします。

https://www.example.com/private/my-investments?portfolioID=325

... CloudFlareは後者のリクエストをキャッシュMISS(cf-cache-status:MISS)として扱い、オリジンサーバーに再度アクセスします。これは、オリジンから返されたHTMLが両方のURLで同一であるという事実にもかかわらずです。

「IGNORE QUERY STRING CACHING:」「IGNORE QUERY STRING CACHING」オプションを選択することで、この問題を確実に解決できると思いました。ただし、このオプションをページルールで使用すると、HTMLはまったくキャッシュされません。.js、.css、および.pngファイルのみがキャッシュされます。そしてもう一度、私の起源はHTMLデータのすべての呼び出しでヒットします。:(

私は明らかな何かを見逃しているに違いないと感じています。何かご意見は?

更新:私があなたによって実行したいという考えを持っていました。この問題を解決するには、内部URLスキームを変更して、「?」ではなく「#」を使用しますか?したがって、次のようなURLの代わりに...

https://www.example.com/private/my-investments?portfolioID=296

..私は次のようなものを使用します:

https://www.example.com/private/my-investments#portfolioID=296

これにより、クエリ文字列パラメーターがCloudFlareにまったく送信されなくなります...どう思いますか?

フェストゥス


「?」の代わりに「#」を使用する URLで問題が解決しました。Sysopsは先に進んで私の質問を削除できます。
Festus Martingale 2016年

4
他の人はあなたがここで理解したことから学ぶかもしれないので、おそらくあなたは上であなたがしたことを答えとして提供し(少し手の込んだ)、可能であればそれを受け入れることができます。ありがとう。
ダン

回答:


4

(@Festus Martingaleが質問に回答済みのマークを付けるための回答が追加されました)。

をハッシュフラグメントとして表示されるため、クエリ文字列がcloudflareに送信されないため、?をで置き換えると#問題が解決します。


私の名前はフェストゥスです。これを回答としてマークしました。
Festus Martingale
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.