Webの高速化に関してメモ。
高速化って言っても幅広いんですけどね。自分が行なっている対策に関して。
一応LAMP環境を前提にしてます。
一番大事なのは測定
まずどこが遅くてボトルネックになっているかを調査するのが一番大切。
サーバー側であれば大部分がDB関連になっているかと思いますが、おそいSQLを出すことがまずは大切。ログやフレームワークなどではSQLの時間などが書いてあるものが多いので、これを利用しましょう。
フロント側でもどこで時間がかかっているかがわからないと対策しようがありません。
DB対策
おそい場合ほとんどがDBがらみの対策になるかと思います。自分が関わってきた対策でいうと、
- ループの中で SQLを発生させている→うまく集計タイプのSQLにしてSQL自体を減らす
- SQL自体が重い→EXPLAINで解析してうまくINDEXをはる
- キャッシュを活用してSQLを減らす→特にマスタ系のデータを呼び出す場合なんかは効果大
こんな感じでしょうか。これで6〜7割型解決します。
フロント対策
あまりやらなかったんですが、直近の仕事でこれの改善を迫られることが多かったです。
この場合もブラウザのデバッガなどを使って問題点を探り、効果を見てあげましょう。
大きく分けると以下のようなものでしょうか。
- CSS,JS,画像の数自体を少なくする
- CSS,JS,画像ファイルを圧縮する
- キャッシュ機能を使い、なるべくファイルアクセスを減らす
ちなみにどんな対策をすればいいかは、下記のようなツールを使うと、現段階でのパフォーマンスの点数を出してくれますし、対策なども簡単に教えてくれます。
サーバー編
私もまだ勉強中ですがMySQLの設定やWebサーバーの設定(例、Apache,Nginx)を見直したりなどでしょうかね。またメモリ使用率が上がっている場合なども単純に再起動すると改善することもあります。
ただ色々手を尽くしても改善しない場合はハードのスペックをあげるしかないですね・・・
参考リンク
たった数分!ページ高速化のためhtaccessでキャッシュ設定は絶対やっておこう!