CrowdHandler WordPress プラグインとキャッシュの非互換性
当社の顧客は、トラフィックの急増に対応するためにCrowdHandlerプラグインを導入しています。当然のことながら、こうした顧客はウェブサイトの表示速度を向上させるために、キャッシュプラグインも導入することがよくあります。残念ながら、この2つの間で競合が生じる可能性があり、キャッシュプラグインやクラウドサービスが、CrowdHandlerがトラフィックを適切に分散させ、ユーザーを公平にサイトへ戻す機能を妨げてしまうことがあります。
キャッシュシステムの仕組みを十分に理解していない限り、CrowdHandler を使用する際は、キャッシュプラグインやクラウドキャッシュサービスを無効にすることをお勧めします。ユーザーからは、当社の WordPress プラグインと以下の組み合わせで使用した際に問題が発生したという報告が寄せられています:
- Kinsta
- NitroPack
- LiteSpeedキャッシュ
- Cloudflare(アセットだけでなく、ページもキャッシュするように設定した場合)
WordPress向けには多くのキャッシュプラグインやサービスが存在しますが、上記に挙げられていないものの中には、問題を引き起こす可能性があるものもあります。CrowdHandlerは「良き市民」として振る舞い、サードパーティのサービスを支援するために標準に準拠した正しいキャッシュヘッダーを設定していますが、一部のプラグインは標準を無視してキャッシュ動作を最大化しようとするため、これらの設定が常に尊重されるとは限りません。
クラウドベースのサービスは、この問題の影響を特に受けやすい可能性があります。これは、キャッシュの動作がWordPressの外側で実装されており、当プラグインではそれを上書きできないためです。
注:プラグインの互換性の問題やサードパーティ製サービスに起因する設定上の問題については、トラブルシューティングを行うことができません。キャッシュの動作によって悪影響を受けており、プラグインを無効化してもキャッシュの問題が解決しない場合は、WordPressプラグインを無効にして、代わりに当社のJavaScriptを使用することをご検討ください。このJavaScriptはキャッシュシステムと良好に連携しており、適切にキャッシュされたページとJavaScriptを組み合わせることで、WordPressサイトの負荷を効果的に軽減することができます。
何が問題なんですか?
当社のWordPressプラグインは、CrowdHandler APIを使用してユーザーのクッキーを確認し、待機が必要な場合はユーザーを待合室にリダイレクトします。 キャッシュプラグインは、クッキーやリダイレクトをキャッシュすることがあります。つまり、ユーザーが待機室からサイトに戻ってきた際、キャッシュプラグインが他のユーザーのクッキーやリダイレクトをキャッシュしているため、再び待機室に送り返されてしまう可能性があります。その結果、ユーザーは何度も待機室に送られ、通過できるかどうかに一見ランダムなばらつきが生じることになります。
私のサイトにもこの問題があるかどうか確認できますか?
ご自身のサイトでこの問題が発生していると思われる場合、またはその可能性を検証したい場合は、ターミナルウィンドウで簡単なテストを実行することができます。 以下のコマンドを実行してください:
curl -I https://yourdomain.com/some-protected-url
ページから、crowdhandler Cookie を含む CrowdHandler ヘッダーが返ってくるのが確認できるはずです。ヘッダーがまったく表示されず、代わりに何らかの「cache: hit」ヘッダーが表示されている場合は、キャッシュされたページを表示していることを示しており、CrowdHandler プラグインは呼び出されていません。 ヘッダーとクッキーが表示されている場合は、すぐにリクエストを繰り返してください。同じクッキー(値が同一のもの)が返ってきた場合は、キャッシュされています。
どうすればいいですか?
- キャッシュプラグインやサービスを無効にして、テストをもう一度実行してください。そのたびに新しいクッキーが表示されるようになれば、問題は解決したことになります。(修正効果が現れるまで、キャッシュの有効期限が切れるのに少し時間がかかる場合があります)
- キャッシュサービスを無効にできない場合は、CrowdHandler 管理パネルで実装方法を JavaScript に変更し、当サービスの JavaScript がサイトにインストールされていることを確認した上で、WordPress プラグインを無効にしてください。JavaScript 統合では、JavaScript 内でクッキーの設定・取得およびリダイレクトが行われるため、これらがキャッシュされることはありません。この場合、キャッシュは有効です。 キャッシュプラグインが正常に動作していれば、ランディングページの表示は高速になり、ユーザーがキャッシュされていないページとやり取りして高負荷を引き起こす前に、JavaScript によってユーザーが切り替えられることになります。
- CrowdHandlerがキャッシュされていないURLのみを保護している場合、この問題の影響を受けることはありません。そのため、待合室の対象URLをキャッシュされていないURLのみに限定してみることをお勧めします。
- 問題の原因となっているキャッシュ層がCloudflareである場合は、WordPressプラグインの代わりに、当社のCloudflareエッジワーカーを使用することをお勧めします。エッジワーカーを設定し、WordPressプラグインを無効にしてください。WordPressをバックエンドとして当社のCloudflareエッジワーカーをご利用の場合は、アカウントにWordPressのURL除外設定を適用できるよう、サポートチケットをご提出いただくことをお勧めします。