九保すこひ@フリーランスエンジニア|累計300万PVのブログ運営中
さてさて、前回は全68種類!Laravel 5.6のartisanコマンドまとめという記事を公開したわけですが、この記事を書いている最中にふと感じたことがありました。それが、「artisanコマンドで作成する3つのキャッシュは、どれぐらい高速化できるのだろう??」というものです。
つまり、現在Laravel 5.6には以下3つのキャッシュ作成コマンドがあるのですが、一体これらがどれぐらい効果があるか気になったんです。
- config:cache ・・・ 設定ファイルのキャッシュ
- route:cache ・・・ Routeのキャッシュ
- view:cache ・・・ ビューのキャッシュ
ということで、今回はこれらキャッシュを使った場合と使わない場合では実行速度がどのぐらい変わるのかを検証してみます。
検証方法
以下のコードを使って、Laravel 5.6のサイトへ1,000回HTTPアクセス。そして、全てが完了するまでにどれぐらい時間がかかったかを表示します。(実行する環境はLaravelを使わない通常のPHPです)
<?php $start = microtime(true); for($i = 0 ; $i < 1000 ; $i++) { file_get_contents('http://***.test?i='. $i .'&rand='. md5(uniqid(rand(),1))); } $time = microtime(true) - $start; echo $time .'秒';
検証結果
キャッシュなしの場合
まずは、キャッシュを作成しないで実行した場合、以下のようになりました。
キャッシュありの場合
そして、冒頭で紹介した3つのキャッシュをartisanコマンドで作成してから実行したものがこちら。
実行時間が30%ほども少なくなりました!Laravelのキャッシュを使うと予想以上に高速化が可能なようですね。(言い換えるとLaravelの設定ファイル等の読み込みは結構時間がかかるということになります)
・・・ということは、最低でも本番環境だけはキャッシュを作っておくべきということになりますね。
どのキャッシュが一番効果が高いのか??
先ほどの検証では、3つ全てのキャッシュを作成しましたが、このうちどのキャッシュが一番効果が高いのかも検証してみましょう。
設定ファイルのキャッシュだけ作成(config:cache)
Routeのキャッシュだけ作成(route:cache)
ビューのキャッシュだけ作成(view:cache)
以上の結果からみると、
- config:cache
- route:cache
- view:cache
の順で高速化できるという結果になりました。当初はBladeを使っているのでビューが一番読み込みに時間がかかるのではと予想してましたが、全く逆の結果となりました。
おわりに
予想以上にartisanコマンドのキャッシュは効果が高いことがわかって嬉しいのですが、もちろんキャッシュはアップデートしたら再度作り直さないといけません。なので、デプロイした瞬間、自動的に新しいキャッシュを作成できるような仕組みを考えたほうがいいのかな、という気がしています。
何かいい方法はないものか・・・忘れずやればいいだけの話ではありますけどね。^^;
ではでは〜!