気が付かなかった不具合
WordPressでコメント欄を設置する場合、スパムコメント対策として画像認証を導入しておくべきです。
僕のサイトでは『SiteGuard WP Plugin』というプラグインを使って、画像認証機能をコメント欄に設置していました。
その効果があってか、今までスパムが一度も来ていませんでした。
しかしある日、コメントが投稿できないというメールを頂きました。
そして気が付きました。
スパムどころか、コメントそのものが来ていないということに。
そこで記事をブラウザで見てみました。
なんと、画像が表示されていませんでした。
これでは、コメントの投稿ができないですね。
原因
『SiteGuard WP Plugin』は画像認証の画像を内部で作成して、そのurlをimgタグのsrc属性として出力しています。
このことは、問題はありません。
問題なのがページのキャッシュでした。
ページキャッシュとは、WordPressが作成したhtmlデータを保存しておき、ブラウザから再度表示要求がきたら、htmlデータを再生成せずに保存していたデータをそのまま送り返す機能です。
全く同じデータを何度も作成するのは非効率なので、この機能はとても役に立ちます。
しかし今回は、これが問題となります。
通常、ブラウザでページの読み込みが行われるとhtmlデータ作成が行われ、それと同時に『SiteGuard WP Plugin』が認証画像を生成しています。
しかし同じページを2回以上読み込もうとすると、サーバーにページキャッシュがあるため、そのデータがブラウザに送られます。
そして一定時間が経過すると、『SiteGuard WP Plugin』が作成した画像がサーバー内から削除されます。
その後ブラウザでページを表示すると、ページキャッシュのデータが送られてきます。
しかしimgタグで指定されている画像が削除されているため、認証画像が空白となってしまうのです。
対処法
今回僕は、『LiteSpeed Cache』というキャッシュプラグインを使用しています。
これはmixhostなどのLiteSpeedサーバー専用のキャッシュです。
このキャッシュの設定をうまく調整すれば、今回の問題に対象できる可能性があります。
しかし今回は、『LiteSpeed Cache』プラグインを停止することにしました。
ひと月1万程度のアクセス数しかないので、キャッシュの恩恵がほとんどないのが現状だからです。
もっとアクセス数が増えたら、何らかの対策を考えようと思います。
■Googleで他サイト検索
■僕がおススメするアフィリエイト教材
■マーケティング施策ツール