Hướng Dẫn Cài Đặt và Sử Dụng Package spatie/laravel-responsecache trong Laravel

Doanh nghiệp gần bạn nhất

được xác nhận bởi itcctv

Hướng Dẫn Cài Đặt và Sử Dụng Package spatie/laravel-responsecache trong Laravel

Chiều nay tôi làm việc với web laravel, yêu cầu là phải tăng tốc nên tôi đã cài đặt gói này và dùng thử.
Hiệu quả khá tốt anh ẹm tuy nhiên mới dùng thật sự rất rối. Nếu làm theo hướng dẫn, thêm vào middle thì trang nào cũng cache cả anh em. Nên khi tôi update 1 cái hình avatar mới nó cũng không hiện được luôn. Sau đó tôi rút ra kinh nghiệm như sau:

  1. không cấu hình cache làm middleware cho toàn bộ route, nó cache cả phần admin luôn mới mệt
  2. đặt alias cho middleware trong phần kernel và chỉ đăt cachereponse cho những route mà mình muốn nó nhanh mượt ví dụ như trang chủ
  3. đặt cache từng phần trong controller khi render viewer, tránh bị cache những phần tương tác với người dùng liên tục.

Dưới đây là nội dung tham khảo, anh em xem và cài đặt nhé

1. Cài đặt package

Chạy lệnh sau để cài đặt package:

bash

Copy code

composer require spatie/laravel-responsecache


2. Cấu hình package

Sau khi cài đặt, bạn cần publish file cấu hình:

bash

Copy code

php artisan vendor:publish --provider="Spatie\ResponseCache\ResponseCacheServiceProvider" --tag="config"

Điều này sẽ tạo file cấu hình tại config/responsecache.php.


3. Tùy chỉnh cấu hình

Các thiết lập quan trọng trong file config/responsecache.php:

  • Driver Cache: Đảm bảo driver cache của bạn được cấu hình trong .env:

    env

    Copy code

    CACHE_DRIVER=file

    Hoặc đổi thành Redis, Memcached nếu cần hiệu suất cao hơn.

  • URI Không Cache: Bạn có thể chỉ định các URI không nên được cache:

    php

    Copy code

    'excluded_paths' => [    'admin/*', // Không cache các trang admin ],

  • TTL (Time-to-Live): Thời gian lưu cache (mặc định là không giới hạn):

    php

    Copy code

    'cache_lifetime_in_seconds' => 3600, // Cache trong 1 giờ


4. Sử dụng cơ bản

Tự động lưu trữ và phục hồi cache

Khi package được cài đặt, tất cả các request GET sẽ tự động được cache. Bạn không cần thêm bất kỳ mã nào nếu không có yêu cầu tùy chỉnh.


5. Tùy chỉnh hành vi caching

Thêm Middleware cho Response Cache

Đảm bảo middleware ResponseCache được thêm vào nhóm middleware trong file app/Http/Kernel.php:

php

Copy code

protected $middlewareGroups = [    'web' => [        \Spatie\ResponseCache\Middlewares\CacheResponse::class,    ], ];


6. Làm mới hoặc xóa Cache

Xóa toàn bộ cache:

bash

Copy code

php artisan responsecache:clear

Xóa cache khi cập nhật dữ liệu:

Trong các action Controller, bạn có thể sử dụng:

php

Copy code

use Spatie\ResponseCache\Facades\ResponseCache; // Xóa toàn bộ cache ResponseCache::clear();

Hoặc bạn có thể sử dụng một Event hoặc Hook để xóa cache tự động khi dữ liệu thay đổi.


7. Bỏ qua cache cho một số route

Bạn có thể thêm middleware DoNotCacheResponse để bỏ qua cache cho một số route cụ thể.

Ví dụ trong route:

php

Copy code

use Spatie\ResponseCache\Middlewares\DoNotCacheResponse; Route::get('/profile', 'ProfileController@show')->middleware(DoNotCacheResponse::class);


8. Tùy chỉnh khi Cache Phụ Thuộc Dữ Liệu

Bạn có thể sử dụng cache profile để thêm điều kiện cache tùy thuộc vào logic cụ thể, ví dụ như phụ thuộc vào session người dùng.

Tạo Cache Profile

Tạo một class mới implement ResponseCacheProfile:

php

Copy code

php artisan make:responsecacheprofile CustomCacheProfile

Class sẽ được tạo trong App/ResponseCacheProfiles/CustomCacheProfile.php. Thêm logic của bạn tại đây. Ví dụ: chỉ cache với người dùng không đăng nhập:

php

Copy code

namespace App\ResponseCacheProfiles; use Illuminate\Http\Request; use Spatie\ResponseCache\CacheProfiles\CacheProfile; class CustomCacheProfile implements CacheProfile {    public function shouldCacheRequest(Request $request): bool    {        return !$request->user(); // Chỉ cache nếu không có user    }    public function cacheNameSuffix(Request $request): string    {        return '';    }    public function useCacheNameSuffix(): bool    {        return false;    } }

Sau đó cấu hình profile trong file config/responsecache.php:

php

Copy code

'cache_profile' => \App\ResponseCacheProfiles\CustomCacheProfile::class,


9. Kiểm tra Cache

Bạn có thể kiểm tra trạng thái cache của các route bằng cách bật log. Trong .env:

env

Copy code

LOG_CHANNEL=stack RESPONSE_CACHE_DEBUG=true


10. Ví dụ Thực Tế

Cache trang danh sách sản phẩm

php

Copy code

Route::get('/products', 'ProductController@index');

Khi người dùng truy cập /products, kết quả response sẽ được cache. Nếu bạn thay đổi dữ liệu sản phẩm, hãy xóa cache như sau:

php

Copy code

use Spatie\ResponseCache\Facades\ResponseCache; public function store(Request $request) {    // Lưu sản phẩm mới    Product::create($request->all());    // Xóa cache liên quan đến sản phẩm    ResponseCache::clear(); }


11. Các Lệnh Artisan Hữu Ích

  • Xóa Cache:

    bash

    Copy code

    php artisan responsecache:clear

  • Kiểm tra Middleware đang hoạt động:

    bash

    Copy code

    php artisan route:list


spatie/laravel-responsecache là một package mạnh mẽ và dễ sử dụng, giúp bạn tối ưu hóa hiệu suất ứng dụng Laravel, đặc biệt cho các trang có dữ liệu không thay đổi thường xuyên. Bằng cách sử dụng package này, bạn có thể giảm tải hệ thống và cải thiện trải nghiệm người dùng.

💬 bình luận
1

Bình luận

Trở thành viên của itcctv — Đăng ký
Thủ thuật tin học văn phòng Thủ thuật Word Thủ thuật Excel
Cuộn