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にまったく送信されなくなります...どう思いますか?
フェストゥス