© 2026 Laravel

Caching trong Laravel – Chiến lược đúng để tăng performance x10

3 phút đọc 28 lượt xem
#laravel #cache #performance #redis #architecture

Rất nhiều developer biết dùng cache như sau:

Cache::put('users', $users, 60);

Nhưng trong production, cache không chỉ là “lưu dữ liệu”.

Nếu dùng sai, bạn sẽ gặp:

  • Data sai lệch
  • Cache không update
  • Bug khó debug

Cache là con dao 2 lưỡi.

#Cache là gì?

Cache là cơ chế:

Lưu dữ liệu tạm thời để giảm truy vấn database

Mục tiêu:

  • Tăng tốc độ
  • Giảm load DB

#Laravel hỗ trợ những loại cache nào?

  • File
  • Database
  • Redis
  • Memcached

Production thường dùng Redis

#Cache hoạt động như thế nào?

Flow cơ bản:

Request → Check Cache
Có → trả về
Không → query DB → lưu cache → trả về

#Cache Aside (phổ biến nhất)

$data = Cache::remember('users', 60, function () {
    return User::all();
});

Laravel tự:

  • Check cache
  • Nếu không có → chạy callback

#Cache Invalidation – Phần khó nhất

“There are only two hard things in Computer Science: cache invalidation and naming things”

#Ví dụ sai

  • Update DB nhưng không clear cache

Dẫn đến:

  • Data cũ
  • Bug production

#Cách xử lý cache đúng

#Clear cache khi update

Cache::forget('users');

#Dùng Cache Tag

Cache::tags(['users'])->put('users.list', $data);
Cache::tags(['users'])->flush();

Clear theo group

#TTL hợp lý

  • Không quá dài
  • Không quá ngắn

#Chiến lược cache (Senior Level)

#Cache Aside

  • Phổ biến
  • Dễ implement

#Write Through

  • Ghi cache + DB cùng lúc

#3. Write Behind

  • Ghi cache trước, DB sau

Laravel thường dùng Cache Aside

#Real Case Production

#Case: Dashboard

❌ Sai:

  • Query nhiều bảng
  • Load real-time

✅ Đúng:

Cache::remember('dashboard.stats', 300, function () {
    return [
        'users' => User::count(),
        'orders' => Order::count(),
    ];
});

#Case: API

  • Cache response
  • Reduce DB load

#Anti-pattern

Cache mọi thứ: Tốn memory + khó quản lý

Không clear cache: Data sai

TTL không hợp lý: Cache vô dụng hoặc sai

#Performance Tips

  • Cache query nặng
  • Cache data ít thay đổi
  • Dùng Redis cho production

#Mindset

Junior:

Cache để nhanh hơn

Senior:

Cache để giảm load hệ thống và scale

#Câu hỏi thường gặp (Interview)

1. Cache là gì và dùng để làm gì?

Lưu dữ liệu tạm để giảm truy vấn database và tăng performance

2. Cache Aside là gì?

Là strategy phổ biến: đọc cache trước, nếu miss thì query DB rồi lưu lại

3. Cache invalidation là gì?

Là việc cập nhật hoặc xóa cache khi data thay đổi

4. Redis dùng để làm gì trong Laravel?

Dùng làm cache, queue, session storage

5. Khi nào không nên dùng cache?

Khi data thay đổi liên tục hoặc không có lợi ích về performance

#Kết luận

Cache không chỉ là kỹ thuật tăng tốc.

Nó là chiến lược quan trọng để scale hệ thống.

Dùng đúng:

  • App nhanh hơn
  • DB nhẹ hơn

Dùng sai:

  • Bug khó debug
  • Data sai