Hướng dẫn php artisan optimize

Config Caching

Laravel cung cấp lệnh Artisan khá là hay ho, với Artisan Cache Config sẽ rất hữu dụng giúp cải thiện hiệu xuất:

 php artisan config:cache

Khi cache được config, những thay đổi của bạn sẽ không có tác dụng. Nếu bạn muốn refresh config, chạy đoạn command bên trên lần nữa. Để clear config cache, sử dụng command dưới đây:

php artisan config:clear

Routes Caching

Route caching là một feature thiết yếu để tối ưu, đặc biệt là cho ứng dụng với nhiều routes và configuration. Route cache là một mảng đơn giản nên giúp tăng hiệu suất Laravel, sử dụng đoạn command dưới đây để sử dụng route cache:

php artisan route:cache

Hãy nhớ chạy command mỗi lần config hoặc file routes được thay đổi. Nếu không, Laravel sẽ load code cũ từ cache. Để clear cache, chạy đoạn command sau:

php artisan route:clear

Remove Unused Service

Một tip quan trọng đó là không nên load tất cả các service thông qua config, hãy disable service không sử dụng trong file config, thêm comment vào service providers

Classmap Optimization

Một mẹo đơn giản là khai báo các files được include để combine chúng thành 1 file, như vậy, cho tất cả include request, chỉ một file sẽ gọi và load, sử dụng command dưới đây:

php artisan optimize --force

Composer Optimize Autoload

Để tăng optimize chúng ta có thể sử dụng composer để quét ứng dụng và tạo one-to-one association class và file trong ứng dụng, sử dụng command sau:

composer dumpautoload -o

Limit Included Libraries

Sử dụng quá nhiều thư viện sẽ làm giảm tốc độ của ứng dụng, trải nghiệm người dùng bị giảm, server phải trả nhiều dữ liệu hơn. Nếu thư viện nào không được sử dụng thì tốt nên là nên loại bỏ nó trong config/app.php để tăng tốc Laravel, một chỗ quan trọng khác để tìm là composer.json

JIT (Just-in-Time) Compiler

Dịch mã PHP sang byte sau đó thực thi nó quả là một quá trình làm tốn tài nguyên. Đó là lý do tại sao Zend Engine được yêu cầu để thực thi chương trình con C. Quá trình này phải được lặp lại mỗi lần ứng dụng được thực thi. Để giảm thời gian, điều cần thiết là quá trình này được lặp lại chỉ một lần. Đây là nơi trình biên dịch Just-in-Time (JIT) tỏ ra rất hữu ích. Đối với các ứng dụng Laravel, trình biên dịch JIT được đề xuất là HHVM của Facebook.

Choose a Fast Cache and Session driver

Để tối ưu hiệu suất, cách tốt nhất là lưu trữ cache và session trong RAM, chẳng hạn như Memcached. Bạn có thể thay đổi nó trong app/config/session.phpapp/config/cache.php.

Cache Queries Results

Caching kết quả của truy vấn thường xuyên được gọi tới là cách tuyệt vời để giảm truy vấn, tăng hiệu xuất:

$posts = Cache::remember('index.posts', 30, function() {
    return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();
});

Use “Eager Loading” for Data

n+1 làm tăng số lượng truy vấn, giảm hiệu suất, lãng phí tài nguyên và thời gian, đã có rất nhiều bài viết nói về vấn đề này, mình sẽ không giải thích thêm. Để sử dụng lazy loading bạn có thể sử dụng như sau:

// code thúi
$books = App\Book::all();
foreach ($books as $book) {
    echo $book->author->name;
}

// eager loading
$books = App\Book::with('author')->get();
foreach ($books as $book) {
echo $book->author->name;
}

Precompile Assets

Để điều chỉnh Laravel, các developer thường đưa code vào các file riêng biệt. Nó giữ cho code được clean và dễ quản lý, nhưng nó không làm tăng hiệu xuất ứng dụng, Laravel cung cấp cơ chế để cải thiện nó bằng cách sử dụng lệnh:

php artisan optimize

php artisan config:cache

php artisan route:cache

Use CDN for Delivering Static Assets

  • Tăng tốc độ truy cập website, load nội dung nhanh, giảm thiểu độ trễ, giật.
  • Tiết kiệm băng thông đáng kể đối với các dữ liệu tĩnh (hình ảnh, css, javascript).
  • Cho phép người dùng Internet có thể tương tác nhanh chóng, gia tăng sự hài lòng khi tiếp cận website trong thời gian thực.

Assets Bundling

Laravel Mix sẽ compile asset vào các file chỉ định, bạn có thể tùy biến trong webpack.mix.js. Ví dụ:

mix.styles([
'public/css/vendor/normalize.css',
'public/css/styles.css'
], 'public/css/all.css');

Tất cả style sẽ được build vào file public/css/all.css.

Assets minifying

Minify tất cả asset băng cách sử dụng Laravel Mix, giúp giảm size, lấy dữ liệu nhanh hơn, tăng tốc cho ứng dụng, chạy command sau:

npm run production

Running the latest version of PHP

Phiên bản mới nhất của PHP đã mang lại những cải tiến đáng kể về hiệu năng của nó. Do đó, đảm bảo rằng ứng dụng Laravel của bạn đang chạy phiên bản PHP mới nhất, để bạn có thể hưởng tất cả các cải tiến hiệu suất được giới thiệu trong phiên bản mới trong ứng dụng của bạn

Laravel Debugbar

Đây là package vô cùng hữu dụng dành cho quá trinh phát triển, bạn có thể dễ dàng inspect xem ứng dụng được chạy như thế nào rồi sau đó cải thiện cho phù hợp.

General Performance Tuning Tips for Laravel

Laravel page speed composer package

Download renatomarinho/laravel-page-speed package bằng cách sử dụng composer, chỉ việc add package vào composer.json và chạy composer update:

"require": {
   ......
   ......
   "renatomarinho/laravel-page-speed": "^1.8"
},

Update Provider Details

Sau khi extract package, vào config/app.php và thêm vào service provider:

'providers' => [
....
RenatoMarinho\LaravelPageSpeed\ServiceProvider::class,
],
...

Publish the package

Sau khi thêm package, chúng ta cần publish nó:

php artisan vendor:publish --provider="RenatoMarinho\LaravelPageSpeed\ServiceProvider"

Adding middleware for web access

Sau khi publish package, chúng ta sẽ caafnt hêm middleware trong 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,
  ]
]

Kiểm tra trong route:

Route::get('/listView', function () {
    return view('listView');
});

View page details

Cuối cùng là tạo file blade và tận hưởng.

Tổng kết

Trên đây là những Tip hữu ích để cải thiện hiệu xuất Laravel, cảm ơn bạn đã đọc đến đây. Happy coding !

Hướng dẫn php artisan optimize