WordPressのサイトでコメントをしたあとになぜかコメントが表示されないなぁ…なんでかしら?
このような悩みを解消するための記事です。
キャッシュを理解しよう
キャッシュが原因でコメントが表示されないことがあります。ただこのキャッシュですが実はいろいろな種類があります。
- ブラウザキャッシュ
- ページキャッシュ
- CDNキャッシュ
ブラウザキャッシュの概要
サーバーがキャッシュを有効にする場合、ブラウザはそのコンテンツを一時的に保存し、将来的なリクエスト時に再利用することができます。ただし、サーバーがキャッシュを無効にする指示を送ると、ブラウザはキャッシュされたコンテンツを再利用せず、新たにリクエストしてコンテンツを取得します。
ブラウザキャッシュはスーパーリロードを行うことによってキャッシュを無視してサーバーから最新の情報を取得します。ただスーパーリロードを行ってもwordpressのコメントがすぐに表示されない場合があります。
ページキャッシュの概要
ページキャッシュは、一度ダウンロードされたリソースを一時的に保存しておくことで、再読み込み時のパフォーマンスを向上させる役割を果たします。つまり、同じページを再度閲覧する場合には、ブラウザはキャッシュ内のリソースを再利用することで、サーバーへのリクエストを減らし、ページの読み込み時間を短縮します。
それでこのページキャッシュがどこに保存されるかですがこのあたりは奥が深いので詳細はわかりませんが簡単に書くとサーバーに保存されます。
CDNキャッシュの概要
CDNキャッシュでは、ユーザーが特定のウェブサイトやアプリケーションにアクセスした際、そのコンテンツの一部または全部をエッジサーバーにキャッシュ(一時的に保存)します。そして、同じコンテンツを要求する他のユーザーがいる場合には、エッジサーバーから直接コンテンツを提供することができます。このようにすることで、オリジンサーバー(コンテンツの元となるサーバー)への負荷を軽減し、ユーザーへの応答時間を短縮することができます。
さてwordpressのコメントが表示されない理由でCDNキャッシュが関係しているのでしょうか?こたえは完全に無関係とは言い切れません。WordPressにはキャッシュプラグインがいくつか公開されており「WP Super Cache」や「W3 Total Cache」はCDNキャッシュの技術を使用しており、プラグインが原因でコメントが表示されないということも十分に考えられます。
どのキャッシュが原因でWordPressのコメントが表示されないのか?
結論からかくと「ページキャッシュ」が原因でコメントが表示されませんでした。
セキュリティの観点からあまり詳細には言えないのですが、サーバーによってはページキャッシュの仕組みを利用して高速にページを表示する仕組みが実装されていることがあります。
まずレンタルサーバーを使っている場合は、「レンタルサーバー名 キャッシュ」というようなワードで検索してページキャッシュの仕組みがサーバーに実装されているかどうか調べます。そのあとにページキャッシュをクリアするかページキャッシュの機能をオフにします。
これでWordPressでコメントをしたあとにすぐにコメントが表示されるようになります。
どのキャッシュが原因でWordPressのコメントがすぐに表示されないのか特定する方法
具体的な原因の特定方法を見ていきましょう。
まずブラウザキャッシュに関してはスーパーリロードで最新の情報を取得できるため、スーパーリロードを行ってもコメントが表示されない場合は「ブラウザキャッシュが原因ではない」と特定することができます。
次にCDNキャッシュですが、WordPressテーマにCDNキャッシュの仕組みが実装されていないことを確認します。これでキャッシュプラグインも利用していなければ「CDNキャッシュが原因ではない」と特定することができます。
消去法であとはページキャッシュになるのでページキャッシュが原因でWordPressのコメントをしたあとにそのコメントがすぐに表示されない。ということがわかると思います。
キャッシュ以外が原因の場合もある
WrodPressのコメントが承認制になっている
前半はキャッシュについて書きましたが、そもそも論としてWordPressのコメントはデフォルトで承認制になっており、承認なしで表示させるにはWordPressの管理画面で設定を行う必要があります。具体的には「設定」→「ディスカッション」→「すでに承認されたコメントの投稿者のコメントを許可し、それ以外のコメントを承認待ちにする」のチェックをオフにします。
NGワードの設定をしている
ディスカッションの設定で「コメント内で許可されないキーワード」を記述している場合、NGワードがコメント内に含まれている場合、コメントを送信しても無効になるためコメントは表示されません。
これがわかりにくいのは特にエラー処理をしていない場合、見た目上はページがリロードされただけのように見えます。
まとめ
まとめます。
WordPressでコメントをしたあとにコメントがすぐに表示されない原因について解説してきましたが、結論としてしばらくまった後にコメントが表示される場合は間違いなくキャッシュが原因です。この場合はキャッシュの見出しで解説したように消去法をつかってどのキャッシュが原因でコメントが表示されないか特定してください。
時間がたってもコメントが表示されないまたはキャッシュを削除してもコメントが表示されない場合は、ディスカッションの設定でコメントが承認制になっていないかどうか確認してください。
追記
わたしの体験ですが、たしかにサーバーのページキャッシュ機能をオフにするとコメントを投稿したあとに表示されるのですがサーバーのページキャッシュ機能をオフにした状態でもhttpレスポンスヘッダーを確認したところ
Cache-Control:no-cache が設定されているので実際はページキャッシュにはアクセスしていないことになるのでは?と思いました。そもそも論としてコメントを投稿したあとはそのコメントにリダイレクトされるのではじめてアクセスするurlになるのでそもそもページキャッシュは作成されてない状態のはず…
というかんじで現在もかなりハマってます。サーバーのキャッシュ機能をオフにすると正常にコメントは表示されるようになるもののページキャッシュが原因とははっきりと断言できない状態になっています。(泣)
コメント