Tìm hiểu về package Laravel responsecache

Tram Ho

Khi xây dựng các ứng dụng web thì thì khái niệm về cache được nhắc đến khá phổ biến. Chúng ta có cache lại kết quả của các câu truy vấn (queries) để trả về kết quả nhanh hơn.
Có 3 ưu điểm của Web Caching là:

  • Giảm tải băng thông.
  • Giảm gánh nặng cho server.
  • Giảm sự tiềm ẩn.

Web cache được đặt giữa các Web Servers (hoặc các servers chính) và client (hoặc nhiều clients).

Trong bài viết này chúng ta sẽ cùng tìm hiểu một Laravel package “laravel responsecache”
Laravel package này có thể lưu trữ toàn bộ response. Mặc định thì nó sẽ lưu trữ tất cả các kết quả trả về của phương thức get-requests thành công dưới dạng json hoặc html trong một tuần. Điều này có khả năng tăng tốc độ phản hồi khá đáng kể.

Cài đặt package

Ta cài package này bằng cách dùng composer

composer require spatie/laravel-responsecache

Nội dung file config/responsecache.php

Sau đó cài đặt provided middlewares SpatieResponseCacheMiddlewaresCacheResponse::classSpatieResponseCacheMiddlewaresDoNotCacheResponse trong kernel.

Chúng ta đã thực hiện xong bước cài đặt vậy sử dụng package như nào?

Sử dụng

Như ở phần mở đầu cũng có nói mặc định package sẽ lưu trữ tất cả các kết quả của get-requests thành công trong một tuần. Mỗi user đã đăng nhập sẽ có bộ nhớ cache riêng.

  1. Xóa bộ nhớ cache

ResponseCache::clear();

khi dùng câu lệnh trên thì sẽ xóa mọi thứ khỏi kho lưu trữ cache được chỉ định trong file config config/responsecache.php.

hoặc có thể dùng lệnh artisan command php artisan responsecache:clear

sử dụng model events

Sử dụng các event trong model như self::created, self::updated, self::deleted

Forget một hoặc một vài URI(s)

Không cho request được lưu vào bộ nhớ cache

Các request có thể chặn bằng cách sử dụng middleware doNotCacheResponse. Middleware này có thể sử dụng ở controller hoặc routes.

sử dụng ở routes

sử dụng ở controller

Để xác định những request nào sẽ được lưu trong bộ nhớ cache và trong bao lâu ta sử dụng class SpatieResponseCacheCacheProfilesCacheAllSuccessfulGetRequests. Hoặc có thể tự tạo một interface SpatieResponseCacheCacheProfilesCacheProfile.php.

Caching cho từng route

thay vì đăng kí một middleware cacheResponse cho tất cả các route thì ta có thể sử dùng middleware cho từng route riêng biệt.

Events

ta có thể sự dụng các sự kiện (event) được giới thiệu ở dưới đây để theo dõi cũng như debug.

  1. ResponseCacheHit
    SpatieResponseCacheEventsResponseCacheHit event này dùng để FeedbackCache và phản hồi được lưu trong bộ nhớ cache đã được tìm thấy và trả về.
  2. CacheMissed
    SpatieResponseCacheEventsCacheMissed FeedbackCache nhưng không tìm thấy hoặc trả về kết quả bộ nhớ cache.
  3. ClearingResponseCache và ClearedResponseCache
    SpatieResponseCacheEventsClearingResponseCache
    SpatieResponseCacheEventsClearedResponseCache
    2 sự kiên này được kích hoạt khi bắt đầu và kết thúc của việc responsecache:clear

Creating a Replacer

Để thay thế nội dung được lưu trong bộ nhớ cache bằng nội dung động, ta có thể tạo một trình thay thế bằng cách thêm một CsrfTokenReplacer trong file config hoặc implementing interface sau SpatieResponseCacheReplacersReplacer.

Sau đó ta sửa lại file config responsecache.php

Tài liệu tham khảo

laravel-responsecache

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo