Nếu bạn đang tìm cách cải thiện hiệu suất của ứng dụng hay website Laravel của mình, thì việc triển khai bộ nhớ đệm (cache) có thể là một lựa chọn tốt. Khái niệm cơ bản là khi bạn sử dụng cache cho phép dữ liệu được lưu trữ và sau đó nhanh chóng được truy xuất. Các trường hợp sử dụng phổ biến bao gồm:
- Thay thế các truy vấn cơ sở dữ liệu (queries) chậm, hoặc giống nhau
- Phản hồi nhanh chóng các request HTTP đã xử lý lần trước.
Mặc dù Laravel Framework đã xây dựng với các giải pháp tuyệt vời, dễ sử dụng cho bộ nhớ đệm phía máy chủ, nhưng vẫn còn rất nhiều điều cần xem xét khi triển khai một lớp bộ đệm trong ứng dụng của bạn. Bạn đang có những thắc mắc như:
- Những gì nên được lưu vào bộ nhớ cache?
- Nó nên được lưu trong bộ nhớ cache trong bao lâu?
- Chúng ta nên lưu nó vào bộ nhớ cache ở đâu?
- Các loại bộ nhớ đệm hiệu xứa truy xuất hay tốc độ đọc ghi như thế nào?
Câu trả lời cho tất cả những câu hỏi đó thường là "nó phụ thuộc vào hoàn cảnh của bạn", tuy nhiên ở bài viết này chúng ta sẽ giải quyết câu hỏi cuối cùng. Chức năng bộ nhớ cache Laravel cung cấp nhiều loại (drivers) bộ nhớ cache, cho phép các công cụ lưu trữ ở phía back-end hay server khác nhau được sử dụng. Để chọn ra cái nào là tốt nhất để sử dụng, nó phụ thuộc vào hoàn cảnh của bạn.
Bạn có cần một bộ nhớ đệm nhanh chóng và dễ thiết lập / bảo trì không? Nơi lưu trữ bộ nhớ cache nên được lưu trữ ở đâu? Nó có nên khả dụng cho nhiều máy chủ không? Hiệu suất có phải là ưu tiên cuối cùng không? Trong bài này hiệu suất là điều chúng ta sẽ tập trung vào tìm hiểu.
Tip: Boony có cung cấp dịch vụ IT outsource để giúp bạn giảm bớt nỗi lo về server hay hosting.
Cache drivers: APC vs Database vs File vs Memcached vs Redis
Các loại bộ nhớ cache mà chúng ta sẽ tập trung vào là những trình hệ thống đi kèm với Laravel mặc định:
- APC (APCu) một hệ thống cache đi kèm của php
- Database (hệ thống bộ nhớ cache này sử dụng công cụ cơ sở dữ liệu của Laravel là- MySQL & SQLite)
- File - hệ thống cache mặc định laravel lưu các file tại storage/framework/cache/data
- Memcached - dịch vụ cache hệ điều hành
- Redis - ứng dụng cache tiên tiến hiện đại.
Laravel cũng đi kèm với 2 trình loại cached khác mà chúng ta sẽ không thử nghiệm:
- Array (mảng) (là loại dữ liệu được lưu trữ trong bộ nhớ cho process PHP hiện tại (ví dụ: HTTP request, Artisan command) nên sẽ không phù hợp với hầu hết mọi người, nó chủ yếu được sử dụng cho tests).
- DynamoDB (cơ sở dữ liệu dựa trên key-value NoSQL độc quyền của AWS, bạn chỉ có thể sử dụng nếu bạn lưu trữ tất cả cơ sở hạ tầng của mình trên AWS)
Test các loại bộ nhớ cache Laravel
Tôi sẽ kiểm tra tốc độ đọc và ghi của từng loại bộ nhớ đệm với 5 loại dữ liệu thường được lưu trong bộ đệm khác nhau:
- Integer : Số nguyên - một số duy nhất
- Stats : một chuỗi được mã hóa JSON gồm 100 số
- Paragraph Đoạn văn - một chuỗi văn bản gồm 150 từ
- Article : Bài viết - một chuỗi văn bản gồm 2500 từ
- Trang web - toàn bộ trang web HTML
Bạn có thể kiếm trên GitHub file tác giả đã viết một lệnh Artisan trong cài đặt Laravel 6 mặc định để thực hiện 1.000 lần đọc và 1.000 lần ghi cho mỗi kiểu dữ liệu trên. Đối với mỗi bài kiểm tra, thời gian thực hiện để hoàn thành hành động sẽ được ghi lại bằng micro giây. Sau đó, điều này sẽ được sử dụng để tính toán thời gian trung bình cho cả đọc và ghi cho mỗi loại dữ liệu, cho mỗi loại bộ nhớ cache.
Đối với môi trường máy chủ, tác giả đã thử nghiệm trên VPS thông số kỹ thuật thấp nhất có sẵn từ Linode (1GB RAM / 1 CPU) đã được cấp phép mới bởi Laravel Forge, sử dụng cấu hình mặc định mà nó cung cấp cho PHP 7.3. Server thử nghiệm này sẽ cho kết quả khá chính xác vì chỉ được cài đặt Laravel test và không có bất kỳ truy cập nào từ bên ngoài ảnh hưởng.
Kết Quả : Mời bạn qua tiếp kỳ 2 : So sánh các loại bộ nhớ cache Laravel phần 2: Kết quả và kết luận
Nguồn:
https://www.georgebuckingham.com/laravel-cache-driver-performance/
Hình ảnh lấy từ unsplash tác giá Sebastian Herrmann
Bình luận: