2019年の夏、レンタルサーバーを Lolipop から ColorfulBox に変更。
この時、一緒に入れた LiteSpeed Cache(Wordpress のキャッシュプラグイン)。
ロリポのApache+独自キャッシュに比べ爆速になる。コスパ最強だな~このレンタルサーバー・・・と思っていたのはつかの間。
やはりロリポに比べて設定難易度がやや高い(ColorfulBoxとロリポは対象の利用者層、思想がやや違う)。
特に最近、設定を間違えてコメント機能が死んでた事に気づいた。
修正した話。せっかくコメント入力してくれたのに、送信できなかった人には申し訳ない。
Firefoxでの表示
現在のサイト構成
先程も書いたとおり、このブログは現在、ColorfulBox(レンタルサーバー)にWordpressをインストールして運用してる。
契約しているのは一番安いBOX1プラン、480円/月。SSD30GB、仮想CPU1コア、メモリ1GBのリソース割当(契約時、年々増強される)。
これは既に、NTTXストアなどで10年くらい前に売ってた安鯖(初期の鼻毛鯖)以上のスペックに到達している。
今となっては、ミドルスペックのスマホ以下の処理能力だろうが、テキスト主体のブログには十分。
現在の負荷状況(ログ等)を見た限り、公称されてるPV数は余裕で捌けるだろう。
つまり、あえてLiteSpeed Cacheを使わなければならない理由は特に無い。
だが使う。そこに機能があるから。
解らない機能を安易にオンするな
テキスト主体と言っても、Wordpress 自体が割と重い。何も考えずに運用していると指数関数的に動作が遅くなってしまう・・・
一般的に負荷を低減する方法としては
- ハードウェアのチューニング
(サーバー契約変更) - ソフトウェアのチューニング
(Wordpress 設定変更) - コンテンツのキャッシュ
(今回の件) - CDNで配信
(処理分散化)
みたいな順に実施できる(と、よく聞く)。
このブログは3まで実施しているが前述のとおり、ぶっちゃけ現状では必要ないだろう・・・が、速さを求めて導入した。速さは正義、人生は挑戦である。
そのうち、「4のCDNで配信」までチャレンジしてみたいところだが、個人ブログで、そこまで到達するのかは謎。
それ以前の話として、LiteSpeed Cacheの全てを把握してもいないのに、CDNがどうたら言うのは順番がおかしい。
実際に今回のように不具合が出ている。事前調査と勉強と経験は大事。
解らない機能を安易にオンしてはいけない。
コメントのcaptcha画像が出ない件を修正
ここから本題、調査した結果は、以下のとおり。
主原因
SiteGuard WP Plugin のセキュリティ機能と、LiteSpeed Cache Plugin のコンテンツキャッシュ機能が衝突している。
更に詳しく書いてみよう。
SiteGuard WP Plugin 先生は、スパムコメント投稿用ボットを排除するため毎回ランダム生成された画像による手動認証を求める。しかし、LiteSpeed Cache Plugin パイセンは、処理速度を上げたいがために「いちいち生成してる画像なんて使ってたら処理速度落ちるだろが、俺が持ってる画像使えや」「ほれ つ画像」
的な動きをしているのである・・・続く動きは以下のようになってる
SiteGuard WP Plugin 先生
→オマエの画像、不正だから排除。
LiteSpeed Cache Plugin パイセン
→ウルセーボケ、まーいーや、とりあえず表示しちゃえ。
SiteGuard WP Plugin 先生
→不正です排除します。
以下ループ。
このように衝突しているのだ(仮定)。
解決策
AプランとBプラン、2つ考えられる。
Aプラン
LiteSpeed Cache Plugin パイセンに、SiteGuard WP Plugin 先生が生成した画像はガン無視するようにお願いする
Bプラン
SiteGuard WP Plugin 先生に、画像認証をやめてもらう
このどちらかの設定をすればOKだろう。しかし、画像認証機能が無いとスパマー天国化することは必至※。
Bプラン採用は厳しい。
ここは、LiteSpeed Cache Plugin パイセンに折れていただき、設定を変更しよう。
※ デフォで許可しないとコメント表示されない設定になっているのだが、何故書き込むのだろうか? WordPressの仕様知らんの? 馬鹿なの? まぁ馬鹿なんだろうけど。
設定変更箇所
LiteSpeed Cache の設定→除外
ここで除外の設定ができる。手順は以下のとおり。
- ブラウザでコメント入力部分を表示させて、「captcha」部分を右クリック、「リンクのURLをコピー」
- LiteSpeed Cache の設定→除外にある、「URIs をキャッシュしない」のところにペースト。
保存して完了。
なお、ドメインごとフルパスで張り付けても、保存後自動的に相対パスへ変換される。
解決しなかった
この場合、確かに画像ファイルはキャッシュされないのだが、パスはキャッシュされる。
画像生成とキャッシュ生成のタイミングがズレると、ファイル名とhtmlのパスが一致せず表示できない模様。
Bプランの採用は難易度が高い。ソースコードを読んで除外設定を更に詰める必要性がある。
次の策を練ろう・・・
Cプラン
SiteGuard WP Pluginのコメント欄における画像生成タイミングとキャッシュのパージタイミングを同期させる。
SiteGuard WP Pluginの画像生成サイクルは60分毎らしい。ということで、パージするタイミングを3000秒(TTLを3000)にしてみた。
これで様子を見てみようか・・・