Tips tối ưu hiệu suất Laravel
NỘI DUNG BÀI VIẾT
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 suất:
php artisan config:cache
Code language: CSS (css)
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
Code language: CSS (css)
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
Code language: CSS (css)
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
Code language: CSS (css)
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.php
và app/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();
});
Code language: PHP (php)
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;
}
Code language: PHP (php)
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
Code language: CSS (css)
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');
Code language: JavaScript (javascript)
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"
},
Code language: JavaScript (javascript)
Update Provider Details
Sau khi extract package, vào config/app.php
và thêm vào service provider:
'providers' => [
....
RenatoMarinho\LaravelPageSpeed\ServiceProvider::class,
],
...
Code language: PHP (php)
Publish the package
Sau khi thêm package, chúng ta cần publish nó:
php artisan vendor:publish --provider="RenatoMarinho\LaravelPageSpeed\ServiceProvider"
Code language: JavaScript (javascript)
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,
]
]
Code language: PHP (php)
Kiểm tra trong route:
Route::get('/listView', function () {
return view('listView');
});
Code language: PHP (php)
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 !
Các bạn có thể tham khảo các bài viết hay về Laravel tại đây.
Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.
Tham khảo: Viblo
Leave a Reply