0

Laravel Debugbar: Đừng để "Sự Im Lặng" của Code lừa dối bạn!

1. Code chạy "ngon", nhưng tại sao Server lại "khóc"?

Có bao giờ bạn rơi vào tình huống này chưa: Code trên máy Local chạy phăm phăm, giao diện mượt mà, Logic đúng 100%. Bạn tự tin đẩy lên Production. Nhưng chỉ sau một tuần, sếp gọi vào hỏi: "Sao hóa đơn tiền Server tháng này tăng gấp đôi?" hay "Sao khách kêu trang danh sách load mất 5 giây?".

Lúc đó, bạn cuống cuồng kiểm tra log, kiểm tra CPU. Nhưng thực tế, câu trả lời đã nằm ngay dưới chân bạn từ lúc code, chỉ là bạn... không thèm nhìn.

Công cụ đó chính là Laravel Debugbar.

2. "Bắt quả tang" những con số biết nói

Nếu bạn nhìn vào cái Tab Models hay Queries trên Debugbar mà thấy con số nhảy lên hàng trăm, thậm chí hàng nghìn (như cái ảnh 544 models "huyền thoại" mà mình từng thấy), thì xin chia buồn: Bạn đang viết code chạy bằng niềm tin, chứ không phải bằng logic.

image.png

Tại sao lại có con số 390 lần khởi tạo một Model PickupLocation chỉ trong một Request?

  • Sự thật phũ phàng: Đó là hệ quả của việc lười suy nghĩ về cách Database hoạt động.
  • Cái giá phải trả: Mỗi một Model được tạo ra là một lần RAM bị chiếm dụng, một lần CPU phải xử lý Object. Nhân con số đó với 100 user truy cập cùng lúc, bạn sẽ hiểu tại sao Server "đột tử"

3. Debugbar không chỉ để ngắm, hãy nhìn vào 3 "điểm chết" này

Để không biến Debugbar thành một món đồ trang trí vô dụng ở dưới màn hình, hãy tập thói quen soi 3 mục sau mỗi khi F5 trình duyệt:

🟢 Tab Queries - "Mồ chôn" Performance

Đừng chỉ nhìn số lượng query. Hãy nhìn vào thời gian thực thi.

  • Nếu thấy một đống query giống hệt nhau nhưng khác ID? Chúc mừng, bạn dính N+1. Hãy gọi ngay cứu tinh .with() vào.
  • Nếu thấy một query mất tận 100ms? Có thể bạn đang thiếu Index ở Database rồi đấy.

🔵 Tab Models - "Kẻ hút máu" RAM

Mục này thường bị anh em ngó lơ nhất. Nếu bạn chỉ hiển thị 20 dòng trên một trang Table, nhưng số lượng Models khởi tạo lên đến 500+, nghĩa là bạn đang "lôi cả dòng họ" dữ liệu ra chỉ để xem cái tên của một người.

Tip: Hãy chỉ select những cột cần thiết thay vì select *.

🔴 Tab Timeline - "Kẻ trộm" thời gian

Nó sẽ cho bạn biết chính xác đoạn code nào đang ngốn thời gian nhất. Đôi khi không phải do Query chậm, mà do bạn đang xử lý một cái Loop "vô tận" hoặc gọi API bên thứ ba mà không có Cache.

4. Đừng để Debugbar phản tác dụng

Một sai lầm "chí mạng" của nhiều anh em là quên tắt Debugbar trên Production.

  1. Lộ thông tin: Hacker sẽ biết sạch cấu trúc thư mục, câu query SQL, thậm chí là các biến môi trường của bạn.
  2. Làm chậm hệ thân: Bản thân Debugbar cũng ngốn tài nguyên để thu thập dữ liệu.

Hãy chắc chắn rằng trong file .env của bạn, APP_DEBUG luôn là false ở môi trường thật.

Tạm kết: Đừng làm thợ code "mù"

Lập trình viên giỏi không phải là người viết code nhanh nhất, mà là người biết rõ từng dòng code của mình đang làm gì với hệ thống.

Hãy bật Laravel Debugbar lên, nhìn thẳng vào những con số "xấu xí" kia và sửa chúng ngay hôm nay. Đừng đợi đến khi khách hàng rời bỏ hay Server sập mới bắt đầu tối ưu.

Anh em thì sao? Con số kỷ lục về Models hay Queries mà anh em từng "được chứng kiến" trên Debugbar là bao nhiêu? Cùng comment chia sẻ để mình thấy không cô đơn nhé!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí