1. ProjectEuropa

    Posted

    ProjectEuropa
Changes in title
+2020年のLaravelパフォーマンス最適化のための12のヒント
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,268 @@
+# 概要
+
+[12 Tips for Laravel Performance Optimization in 2020](https://www.cloudways.com/blog/laravel-performance-optimization/)
+から引っ張ってきたものです。~~結構Google翻訳の質が向上していた。~~
+
+掻い摘んで抜粋していきます。
+
+## 目次
+
+1. 構成キャッシング
+2. ルートキャッシング
+3. 未使用のサービスを削除
+4. クラスマップの最適化
+5. Composer最適化オートロード
+6. 含まれるライブラリを制限する
+7. JITコンパイラ
+8. Fast Cache and Sessionドライバーを選択する
+9. クエリ結果のキャッシュ
+10. Eager loadingを使用する
+11. アセットのプリコンパイル
+12. PHPの最新バージョンを実行する
+13. CDNを使う
+14. アセットバンドル
+14. ファイル圧縮
+15. PHPの最新バージョンを実行する
+16. Laravelデバッグバー
+17. Laravelの一般的なパフォーマンスチューニングのヒント
+
+
+
+## 前提条件
+
+- Laravel 5.5
+- PHP 7.1
+- MySQL (Version不明)
+
+### 1. 構成キャッシング
+
+Artisan Cache Configでパフォーマンスを向上させます。
+
+```console
+$ php artisan config:cache
+```
+
+設定を更新する場合は、キャッシュをクリアしましょう。
+
+```console
+$ php artisan config:clear
+```
+
+アプリケーションをさらに最適化するには、PHPコードをキャッシュするOPcacheを使用して、再コンパイルする必要がないようにします。
+[OPcache PHP公式ドキュメント](https://www.php.net/manual/ja/book.opcache.php)
+
+### 2. ルートキャッシング
+
+```console
+$ php artisan route:cache
+```
+
+**configまたはroutesファイルが変更されるたびにコマンドを実行することを忘れないでください。**
+
+キャッシュをクリアするには、次のコマンドを使用します。
+
+```console
+$ php artisan route:clear
+```
+
+### 3. 未使用のサービスを削除
+
+設定ファイルで未使用のサービスを必ず無効にしてください。
+使用していないサービスプロバイダーにコメントアウトを追加します。
+
+### 4. クラスマップの最適化
+
+```console
+$ php artisan optimize --force
+```
+
+### 5. Composer最適化オートロード
+
+```console
+$ composer dumpautoload -o
+```
+
+### 6. 含まれるライブラリを制限する
+
+ライブラリなしで実行できると思われる場合は、 `config/app.php`から削除してLaravelアプリを高速化します。
+もう1つの重要な場所はcomposer.jsonです。
+
+### 7. JITコンパイラ
+
+Laravelアプリの場合、推奨されるJITコンパイラはFacebookのHHVMです。
+
+### 8. Fast Cache and Sessionドライバーを選択する
+
+Laravel5のパフォーマンスのための最速のキャッシュおよびセッションドライバーはMemcachedだと思われます。
+
+セッションドライバーを変更するためのドライバーキーは、通常 `app/config/session.php` にあります。同様に、キャッシュドライバーを変更するためのドライバーキーは `app/config/cache.php` にあります。
+
+### 9. クエリ結果のキャッシュ
+
+頻繁に実行されるクエリの結果をキャッシュすることは、Laravel5.5のパフォーマンスを向上させる優れた方法です。
+次のように使用される記憶機能をお勧めします。
+
+```php
+$posts = Cache::remember('index.posts', 30, function(){
+ return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();
+});
+```
+
+### 10. Eager loadingを使用する
+
+Eloquentは最初のクエリに応答して、関連付けられているすべてのオブジェクトモデルを取得します。これにより、アプリケーションの応答が増加します。
+
+遅延ローディングの例です。
+
+```php
+$books = App\Book::all();
+foreach ($books as $book) {
+ echo $book->author->name;
+}
+```
+
+Eager loadingの例です。
+
+```php
+$books = App\Book::with('author')->get();
+foreach ($books as $book) {
+ echo $book->author->name;
+}
+```
+
+### 11. アセットのプリコンパイル
+
+```console
+$ php artisan optimize
+$ php artisan config:cache
+$ php artisan route:cache
+```
+
+### 12. CDNを使う
+
+CDNサーバーから静的アセットファイルをロードすると(ファイルをホストするサーバーから直接ロードするのではなく)、Laravelアプリケーションのパフォーマンスが向上します。
+
+### 13. アセットバンドル
+
+Laravel Mixで複数のスタイルシートやJSファイルを1つのファイルに効率的に連結できます。
+
+```webpack.mix.js
+mix.styles([
+'public/css/vendor/normalize.css',
+'public/css/styles.css'
+], 'public/css/all.css');
+```
+
+### 14. ファイル圧縮
+
+Laravel Mixを使用してアセットを縮小できます。
+
+```console
+$ npm run production
+```
+
+### 15. PHPの最新バージョンを実行する
+
+PHPの最新バージョンでは、パフォーマンスが大幅に向上しています。したがって、Laravelアプリケーションが最新バージョンのPHPを実行していることを確認して、アプリケーションの新しいバージョンで導入されたすべてのパフォーマンス改善を活用できるようにします。
+
+### 16. Laravelデバッグバー
+
+最適化手法ではなく、パッケージです。Laravel Debugbarは、PHPデバッグバーをLaravel 5と統合するためのパッケージです。
+
+ServiceBarには、デバッグバーを登録して出力に添付するServiceProviderが含まれています。
+
+Laravelパフォーマンスモニターとして使用できるパッケージです。アプリケーションの開発中にこのパッケージを使用することをお勧めします。
+
+これにより、アプリケーションの実行状況を簡単に検査して、それに応じて改善することができます。
+
+
+### 17. Laravelの一般的なパフォーマンスチューニングのヒント
+
+Webサイトのパフォーマンスを最適化するには、次のようないくつかの調整を実装するだけです。
+
+1. Laravelページスピードコンポーザーパッケージ
+2. プロバイダーの詳細を更新する
+3. パッケージを公開する
+4. ミドルウェアを登録する
+5. ページ上にルートを作成する
+6. ブレードファイルを作成
+7. アプリを実行
+
+#### Laravelページスピードコンポーザーパッケージ
+
+Composerを使用して、`renatomarinho/laravel-page-speed`パッケージをダウンロードと展開します。
+
+```console
+$ composer require renatomarinho/laravel-page-speed
+```
+
+#### プロバイダーの更新
+
+`config/app.php`ファイルに移動し、サービスプロバイダーとエイリアスを展開します。
+
+```config/app.php
+'providers' => [
+....
+....
+RenatoMarinho\LaravelPageSpeed\ServiceProvider::class,
+
+```
+
+#### パッケージの公開
+
+```console
+$ php artisan vendor:publish --provider="RenatoMarinho\LaravelPageSpeed\ServiceProvider"
+```
+
+#### Webアクセス用のミドルウェアを追加し、ルーティングに追加する
+
+```Kernel.php
+protected $middlewareGroups = [
+
+ 'web' => [
+
+ ........
+
+ ........
+
+ \RenatoMarinho\LaravelPageSpeed\Middleware\InlineCss::class,
+
+\RenatoMarinho\LaravelPageSpeed\Middleware\ElideAttributes::class,
+
+\RenatoMarinho\LaravelPageSpeed\Middleware\InsertDNSPrefetch::class,
+
+\RenatoMarinho\LaravelPageSpeed\Middleware\RemoveComments::class,
+
+\RenatoMarinho\LaravelPageSpeed\Middleware\TrimUrls::class,
+
+\RenatoMarinho\LaravelPageSpeed\Middleware\RemoveQuotes::class,
+
+\RenatoMarinho\LaravelPageSpeed\Middleware\CollapseWhitespace::class,
+
+ ]
+
+]
+```
+
+```web.php
+// Define Route
+// I going to add a route to check Optimized Website Speed and Performance in Laravel 5.5
+Route::get('/listView', function () {
+ return view('listView');
+});
+```
+
+#### カスタムスタックによるパフォーマンスの向上
+
+ThunderStackとして知られるカスタムスタックは、Laravelアプリのパフォーマンスを向上させるように設計されています。受賞したレシピは、ApacheとNGINX、Varnish、Memcachedで構成されています。
+
+
+## 参考
+
+[12 Tips for Laravel Performance Optimization in 2020](https://www.cloudways.com/blog/laravel-performance-optimization/)
+
+## 感想とか
+
+Laravelアプリが遅い。重い。
+色々言われている所もあると思いますが、パフォーマンスチューニングで実施できることは結構ありますね。
+~~すっごい遅いし重いしLaravelクッソだなぁと思ってブーメラン~~