CloudFlareの「新規ユーザー」に関する簡単な質問:
背景:Originサーバーが提供するHTMLページは変更されません。ページがユーザーのブラウザにロードされた後、すべての動的コンテンツはJavaScriptを介してダウンロードされます。 JavaScriptによって派生した動的コンテンツは、URLのクエリ文字列に一部依存しますが、クエリ文字列自体は、最初にダウンロードされたHTMLコンテンツには影響しません。したがって、次のURLはすべて、ブラウザのJavaScriptによって処理される前に、Originからexactly同じ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)として処理し、Originサーバーに再度アクセスします。これは、Originから返されたHTMLが両方のURLで同一であるという事実にもかかわらずです。
「IGNORE QUERY STRING CACHING:」「IGNORE QUERY STRING CACHING」オプションを選択して、この問題を確実に解決すると思いました。ただし、ページルールでこのオプションを使用すると、HTMLはまったくキャッシュされません。 .js、.css、および.pngファイルのみがキャッシュされます。また、HTMLデータを呼び出すたびにOriginがヒットします。 :(
明らかな何かを見逃しているに違いないと思う。何かご意見は?
UPDATE:あなたが実行したいアイデアがありました。 「?」の代わりに「#」を使用するように内部URLスキームを変更して、この問題を解決できますか?のようなURLの代わりに...
https://www.example.com/private/my-investments?portfolioID=296
..私は次のようなものを使用します:
https://www.example.com/private/my-investments#portfolioID=296
これにより、クエリ文字列パラメーターがCloudFlareにまったく送信されなくなります...どう思いますか?
フェストゥス
(質問を回答済みとしてマークするために@Festus Martingaleに回答が追加されました)。
?
を#
に置き換えると、ハッシュフラグメントとして表示されるクエリ文字列がcloudflareに送信されなくなるため、問題が解決しました。