九保すこひ@フリーランスエンジニア|累計300万PVのブログ運営中
現在少し大きな開発を任せていただいていますが、サイト規模が大きくなってくるとやはりデータベースやらファイルやらを読み込む数が多くなってしまい表示速度が遅くなってしまします。
そこで、今回はいつも記事にしている Laravel だけでなく PHP全体でサイトを高速化する方法をまとめてみました。
(※高速化したいならフレームワーク使うなよ、というお話は無しお願いします m_ _m)
1.各種環境のバージョンを上げる
(PHP 5.6 → 7.0)
これは少し前の話ですが、効果が大きく感じたので一番目に選びました。
PHP 5.6 から php 7.0 へアップグレードすると体感でも表示速度が上がったことがわかると思います。
なお、今回は PHP 7.0 → PHP 7.1 へ移行してもそれほど表示速度に違いはないとのことですので、PHP 8 の JITコンパイラを心待ちにしています ^^
(Apache2 → Nginx)
Apache と Nginx のパフォーマンス比較をしているページを見ると、特に多数のアクセス時のメモリの使い方が nginx の方がはるかに効率的でしたので長年使ってきた Apache 2 を捨て nginx に移行することにしました。
元々 nginx を使うのはあるクライアント様からのご希望からでしたが今後は他の開発でも優先的に使っていこうと考えています。
(HDD → SSD)
サーバーのストレージを SSD に変更するだけで劇的に表示速度を改善することができました。
実は容量が多いほうがいいだろうという貧乏性でまだ HDD で運用しているサイトを個人的に持っているのですが、今後サーバーの契約が近づいたら全て変更してやろうと画策中です!
2.キャッシュ機能を活用する
キャッシュ機能と言っても自前でいろいろ用意するのはめんどうなので、PHP が持っている以下2つのキャッシュ機能を活用することにしました。
(Opcache)
プログラムコードを解析したものをキャッシュとして保存しておく機能なので、次回からコンパイル時間が短くなるようです。
実際に少し高速化を感じることができました。
(APCu)
こっちはユーザーの変数などをキャッシュしておく機能です。
データベースへのアクセスが多い現在の開発サイトでは特に大きな効果を発揮しています!
※なお、CentOS で Opcache と Apcu をインストールするには以下のように yum を使ってできます。(リポジトリなどは各自整備しておいてくださいね)
sudo yum install --enablerepo=remi-php70 php-opcache php-apcu
※また、Laravel で apc を利用するには以下のように .env を変更してください。
CACHE_DRIVER=file SESSION_DRIVER=file ↓↓↓ CACHE_DRIVER=apc SESSION_DRIVER=apc
3.Vue を活用する
これまでは当たり前のようにPHPで HTML をレンダリングしていましたがこれも少しずつ変更してきました。
Bootstrap を使っているのでいまでも jQueryの恩恵を多く受けているのが現状ですが、はやり Vue と比べると表示スピードが遅いので、最近は使える場所はできるだけ Vue を使うようにしています。
受信側のPCやスマートフォンが高性能になっているので JSを使ってそっちでレンダリングしてね!というスタイルは時流にかなっていると思います。
(ただ、まだやっぱり React派が多いのかな?んー、タスクランナーが好きじゃないんだよなー。。)
今後は Bootstrap だけじゃなく Semantic UI や Materialize なんかのフレームワークも試して高速化を進めたいと思います!
今回は以上です m_ _m