サイトの速度改善の見落としがちな重要ポイント

Last updated: July 1, 2021

サイトの速度を改善する手法は多くあり、その中でも重要なものをご紹介します。

フレームワークの改善

まず初めに気を付けておきたいのが、フレームワーク自体が重いものでないかです。以前、作り始めたばかりなのに重いサイトがあり、調べてみたところフロントエンドフレームワーク自体が重いものであったのが原因と分かりました。結局、Vueという軽いフロントエンドフレームワークに乗り換えることで圧倒的に高速化することができました。

このように、ベースとなっているフレームワーク自体の選択は重要な決定事項です。

データベース層の改善

次に、データベースとの接続でサイトが重くなっているケースです。

本当にデータベースが速度のボトルネックになっているかはログを見ることで確かめられます。コネクション前後を start_time, end_time などとして、差をとることでデータベースとの接続部分でどのくらい時間がかかっているか可視化することができます。

バックエンドの言語のうち、rubyやpythonなどは、WebページやWebアプリを作るうえで人気の言語ですが、ログの取りやすさという点でも一日の長があります。

キャッシュとインデックス

データベースとの接続の部分を高速化する改善策はいくつかあり、代表的なものがキャッシュとインデックスです。

キャッシュとは、重いデータベースの処理が発生する場合、結果を一時保存しておいて、すぐに返せるようにするシステムのことです。大量にアクセスをさばかなければいけないときは特に、このキャッシュの考え方は役に立ちます。

インデックスとは、データベースで検索する際高速化するために張るものです。よく検索する条件に当たるカラムにインデックスを張ればよいわけです。

こちらは注意しなければいけない点があって、インデックスが聞かない場合があります。よくある例が、前方一致以外のLIKE句です。この場合、高速化したいとなると、全文検索エンジンを導入することになります。

また、インデックスを張れば速くなるからと言って、闇雲にインデックスを張ってしまうのは、インデックスショットガンという有名なアンチパターンになります。この場合、INSERT 句などが遅くなってしまいます。この点に注意しながらインデックスを張っていきます。

以上の2点が完了したら、あとはよく言われることを注意するだけです。例えば画像の遅延読み込みを導入したり、JSやCSSをminifyしたりなどです。一度GoogleのPageSpeed Insights を利用してみると、いろいろアドバイスがもらえます。

Slackで完結する内部ツールとヘルスチェック

データベースの新着レコードをSlackに通知したり、Slackで完結するヘルスチェックツールのSlack botを作っています。平易な英語で動作するもので、無料で試すことができます。

Add to Slack