Laravel Fast Paginate là gì?

Laravel Fast Paginate là một macro nhanh về phân trang offset/limit cho Laravel. Nó được sử dụng để thay thể paginate trong Laravel.
Package này sử dụng phương pháp SQL tương tự như "Deferred Joins" để đạt được Speedup.
Deferred Joins là một kỹ thuật trì hoãn quyền truy cập vào một cột được yêu cầu cho đến khi offset và limit được áp dụng.

Cài đặt Laravel Fast Paginate

Package hỗ trợ Laravel 8 và 9. (Laravel 8 phải từ 8.37 trở lên)
Bạn cài đặt Package Laravel Fast Paginate thông qua lệnh composer sau:

composer require hammerstone/fast-paginate

Cách sử dụng Laravel Fast Paginate

Bất cứ nơi nào bạn sẽ sử dụng cú pháp sau:

Model::query()->paginate();

Bạn có thể sử dụng phương pháp Laravel Fast Paginate để thay thế như sau:

Model::query()->fastPaginate();

Laravel Fast Paginate cũng hỗ trợ Relationships như sau:

User::first()->posts()->fastPaginate();

Trong README.md của Laravel Fast Paginate có nói rằng:

Không chắc rằng phương pháp này sẽ hoạt động kém hơn phương pháp truyền thống offset/limit. Mặc dù có thể, vì vậy hãy đảm bảo kiểm tra dữ liệu của bạn !!!

Dưới đây là một kết quả được cộng đồng sử dụng cho đến nay:

Trước khi sử dụng Sau khi sử dụng Link
30s 250ms Twitter
28s 2s Twitter
  Nhanh gấp 7.5 lần Twitter
1.1s 0.1s Twitter
20s 2s Twitter

Nếu bạn muốn tìm hiểu thêm về kỹ thuật được áp dụng trong package Laravel Fast Paginate, bạn hãy xem Efficient Pagination Using Deferred Joins của Aaron Francis.

Tài liệu tham khảo:
https://github.com/hammerstonedev/fast-paginate
https://aaronfrancis.com/2022/efficient-pagination-using-deferred-joins

CÓ THỂ BẠN QUAN TÂM

Laravel Facades

Laravel Facades

Facade là gì? Chúng ta có thể hiểu Facade là mặt tiền và mặt trước của một tòa nhà hay bất cứ thứ gì. Tầm quan trọng của Facade là chúng có thể dễ nhận thấy và nổi bật hơn, tương tự như vậy, thì...

Laravel Routing

Laravel Routing

Route là gì? Đúng như tên gọi của nó, Route thực hiện chức năng định tuyến, dẫn đường cho các HTTP request gửi đến đúng nơi mà ta mong muốn. Với sự phát triển mạnh mẽ của ứng dụng web ngày nay, việc...

Laravel User Authentication

Laravel User Authentication

Trong hướng dẫn này, tôi sẽ hướng dẫn bạn xây dựng chức năng đăng nhập trong Laravel. Công bằng mà nói thì bạn có thể sử dụng Laravel UI hoặc JetStream để tự động tạo ra chức năng đăng nhập trong Lara...

Integrating elFinder into TinyMCE 6 in Laravel

Integrating elFinder into TinyMCE 6 in Laravel

TinyMCE TinyMCE là một trình soạn thảo WYSIWYG được xây dựng trên nền tảng Javascript, được phát triển dưới dạng mã nguồn mở theo giấy phép MIT bởi Tiny Technologies Inc. TinyMCE cho phép người d...

Laravel View

Laravel View

View là gì? Đây là phần giao diện (theme) dành cho người sử dụng. Nơi mà người dùng có thể lấy được thông tin dữ liệu của MVC thông qua các thao tác truy vấn như tìm kiếm hoặc sử dụng thông qua các...

Laravel Export & Import CSV

Laravel Export & Import CSV

Trong bài viết này, tôi sẽ hướng dẫn các tạo cách Export hoặc Import CSV trong Laravel. Nhưng thay vì chỉ viết hàm đơn thuần trong PHP thì tôi sẽ hướng dẫn các tạo ra một Service trong Laravel bằng cá...

Laravel One to One Eloquent Relationship

Laravel One to One Eloquent Relationship

Mối quan hệ một-một là một mối quan hệ rất cơ bản. Trong hướng dẫn này, tôi sẽ hướng dẫn bạn cách tạo dữ liệu và truy xuất dữ liệu bằng Eloquent Model. Trong hướng dẫn này, tôi sẽ tạo hai bảng là u...

Eloquent Methods: whereDoesntHaveRelation and whereMorphDoesntHaveRelation

Eloquent Methods: whereDoesntHaveRelation and whereMorphDoesntHaveRelation

New Laravel 11.37: Eloquent Methods Laravel cung cấp cho chúng ta khả năng xây dựng các truy vấn dữ liệu mạnh mẽ với Eloquent ORM, giúp chúng ta có thể xử lý các truy vấn cơ sở dữ liệu phức tạp một...

Simplify Your Laravel Workflow with Laravel Pint

Simplify Your Laravel Workflow with Laravel Pint

Laravel Pint là gì? Laravel Pint là một công cụ sửa đổi mã nguồn của bạn để mã nguồn của bạn tuân thủ theo các tiêu chuẩn. Nói một cách khác, Laravel Pint sẽ quét toàn bộ mã nguồn của bạn, phát...

ManhDanBlogs