サイトの閲覧数に関わるSEOでしばらく前から、サイトの評価を上げたければ表示速度をとにかく上げろというのが主流で、当サイトでも常に表示速度の向上に努めている。

SOY CMSの画像のリサイズでJPEGのロスレス圧縮を追加した

SOY CMSのサイトでPageSpeed Insightsのスコアが99になりました

SOY CMSのブログブロックの使用を制限して、ブログページの高速化

SOY CMSのキャッシュモードで表示の高速化


上記の対応だけでもデータ転送量やデータベースへの参照回数を大幅に改善して、表示速度に関して多大な影響があったはずだ。


今回は開発のポリシーとして当初から手をつけていなかった個所に手を加え、

データベースの参照の効率を改善してみることにした。


当ブログで活用しているSOY CMSというCMSでは、


柔軟性を優先すべく、データベースの所々でインデックスを貼らないという対処をしてきた。


たとえば、


blog_entry_detail


ブログの記事詳細ページを開く際、

https://saitodev.co/article/鉄の吸収とアルミニウムの無毒化というURLであった場合、

URLの末尾にある記事タイトルである鉄の吸収とアルミニウムの無毒化という文字列をクエリとして記事のデータベースから記事データを検索するわけで、このクエリをSOY CMSではエイリアスと呼んでいる。


記事テーブルの柔軟性を維持するため、エイリアスカラムにUNIQUEインデックスを貼らずにいたが、

長年の運営でエイリアスがUNIQUEでない意味が見出だせなかったので、

今回の改修でエイリアスにインデックスを貼ることにした。


他に記事の投稿時刻にもインデックスを貼ることにして、アーカイブページの表示の高速化を試みることにした。

投稿時刻は記事投稿画面で手動で変更することが出来ないため、

同時刻の記事を投稿した場合は後で投稿した記事の投稿時刻を1秒ずらすという仕様を追加した。


投稿時刻の正確性よりも、1秒ずれてでも表示の高速化の方がサイト運営において絶対に価値があるはずだ。


今回のインデックス周りは試験的な意味合いも強いので、

利用する場合は末尾のURLより新しいバージョンをダウンロードしてサーバに配置した後、

記事詳細高速表示プラグインを有効にすることでデータベースに変更が入る仕様となっている。


今回紹介した機能を同梱したパッケージは下記のページからダウンロードできます。

https://saitodev.co/soycms/