このサイトは高速が売りのLuxeritasという無料テーマを利用させてもらっています。最初のうちは確かに速かったです。
しかし、Googleアドセンスの導入やいろいろカスタマイズしていくうちに、なんかもっさりし始め、最近では、Webが表示されるまでの時間も結構かかる感じで、待ち時間が増えてきました。
なぜページ表示が遅く感じるのか?
何をもって、ページ表示が遅いというかですが、シンプルに以下のような現象が起きます。
- ページを開くと、アイキャッチ画像とSNSシェアアイコンを表示する直前で一時停止して、なかなかそこから先が表示されない。
- サイドバーの表示も一時停止してしまう。
アイキャッチ画像とSNSシェアアイコンを表示する直前で一時停止
まず、アイキャッチ画像とSNSシェアアイコンの部分を見直しました。
アイキャッチ画像がフルサイズ指定
Luxeritasはアイキャッチ画像を記事先頭に表示する機能はなく、公式サイトにあるようにfunction.phpに記載することで記事先頭にアイキャッチ画像を表示することができます。Luxeitasを利用している殆どのサイトはこの方法でアイキャッチ画像を表示するようにしているのではないかと思います。
紹介されているfunction.phpへの記述内容では、画像サイズがフルサイズ指定になっています。アップロードした画像サイズによっては最初の読み込みに時間がかかるのではないかと考えました。
フルサイズ⇒大サイズに変更しました。
変更前
$content = '<div class="post-top-thumbnail">' . get_the_post_thumbnail( $post->ID, 'full' ) . '</div>' . $content;
変更後
$content = '<div class="post-top-thumbnail">' . get_the_post_thumbnail( $post->ID, 'large' ) . '</div>' . $content;
記事内の画像もフルサイズになっているものは無駄なので大サイズに変更することにしました。
記事先頭のSNSシェアアイコンにカウント数を表示
記事先頭のSNSシェアアイコンはもともと必要ないだろうとおもって表示していませんでしたが、ある時期からあった方が便利だと思うようになり、表示するようにしました。
更に、どうせだったらカウント数も表示しようということになって、記事先頭にSNSシェアアイコンを表示し、カウント数も表示していましたが、SNSカウント数を読み込む部分でページの表示が引っ掛かっている感じがしていました。
記事先頭のSNSシェアカウント数の表示をやめました。
そうすると、SNSシェアアイコンを表示する前で一時停止している時間がかなり短くなりました。
サイドバーがなかなか表示されない
原因は外部から広告を読み込んでいるからなのだが・・
サイドバーがなかなか表示されないのはGoogleアドセンスの広告が原因なのはわかっていたので、他のASPの内容固定の広告に切り替えました。
それでも前よりはましな程度で改善はしませんでした。
広告表示は外部サーバーからデータを引っ張ってくるので、その待ち時間が長いのだと思います。
対策はLazyLoadをサイドバーで有効化
Luxeritasには高速化のために画像の遅延読み込み機能(Lazyload)があります。画像の遅延読み込みを適用する個所は細かい指定ができます。適用個所の説明にサイドバーに適用するとスクロール追従ウィジットで不具合が出る可能性云々と書かれていたので、サイドバーの画像遅延読み込みはOFFにしていました。
ダメもとでそれをONにしました。
そうしたら、特に問題も起きず、引っ掛かりがかなり改善しました。
まとめ
Luxeritasは表示高速化のためSNSカウントやブログカードなどをサーバー内にキャッシュする機能がついてます。キャッシュしているから大丈夫だろうと安心して使いまくると結構遅くなるようです。Luxeritasが作ったキャッシュの読み込みの遅さはLuxeritasというよりサーバー側の処理能力の問題なので、Luxeritasに問題はありません。
非力なサーバーであればどのようなテンプレートを使っていても同じような問題が起きるのかな?とは思っています。
後日談
とりあえずの対処はしたのですが、他のサイトと比べるとなんか遅く感じるので、どうも納得いかず、モヤモヤがとれない感じでした。
このサイトは、Sitegroundというサーバーを使っていて、サーバー側のキャッシュ機能としてSG-optimizerというプラグインが用意されいたので、有効化していました。
そういえばLuxeritasはキャッシュ機能と相性が悪いとか悪くないとか聞いたことがあるので、もしかしたらそれが原因かもと思って、キャッシュ機能をOFFにしました。そうしたら、変な引っ掛かりはなくなりました。
SNSカウントキャッシュとか、ブログカードキャッシュとかテンプレートのキャッシュ機能の部分で引っ掛かる感じだったので、サーバーのキャッシュ機能と相性が悪かったのかもしれません。
もし、Sitegroundを使っている人で、キャッシュを有効にしても早くならないという場合は逆にオフにしてみたらいいかもしれません。