Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Redis

Tăng hiệu suất Strapi với Cache Serverless Redis

Giao dự án đúng hạn thường có nghĩa là bạn cần tận dụng càng nhiều công nghệ hiện có càng tốt. Mọi quyết định bạn đưa ra dẫn đến triển khai tùy chỉnh phải xem xét rằng bạn cũng cần duy trì giải pháp của riêng mình. Đây là lý do các công cụ mã nguồn mở như Strapi là lựa chọn tốt để xây dựng REST API cho dự án tiếp theo của bạn.

Strapi là một headless CMS hiện đại. Nó cho phép bạn định nghĩa schema với giao diện đồ họa, nên ngay cả người không chuyên kỹ thuật cũng có thể mô hình hóa dữ liệu. Đội ngũ phát triển của bạn có thể tập trung xây dựng ứng dụng web và mobile và phát hành tính năng mới mà không lo về triển khai backend.畢竟, một cộng đồng mã nguồn mở lớn duy trì Strapi.

Tăng tốc Backend

Bây giờ, Strapi khá nhanh trong việc trả lời phản hồi khi dùng SQLite, nhưng khi dữ liệu và cơ sở người dùng tăng, điều này có thể không phải giải pháp tốt nhất để bắt đầu. Sau khi ra mắt thị trường, bạn có thể kết thúc với hàng nghìn người dùng phân bố khắp cầu.

Vì vậy, bạn cần mở rộng Strapi và, lần lượt, triển khai cơ sở dữ liệu để xử lý tất cả tải đó. Thật tuyệt nếu bạn chỉ cần cắm thêm một loại cache nào đó?

REST Cache xuất hiện

Strapi REST Cache là một bộ sưu tập các plugin Strapi. Chúng giúp bạn thêm cache LRU vào ứng dụng Strapi, giảm thiểu các request thực tế đến cơ sở dữ liệu.

Memory, Couchbase và Redis được hỗ trợ, và bạn thậm chí có thể viết custom provider. Phần thú vị ở đây là Redis cache provider cho phép chúng ta kết nối với Upstash Redis chỉ trong vài phút!

Bạn có thể dùng Upstash Redis trong hầu hết các trường hợp bạn dùng Redis. Khác biệt là bạn có thể thiết lập Upstash Redis chỉ với vài cú nhấp chuột. Nó cũng đi kèm sao chép toàn cầu, nên các instance Strapi của bạn sẽ được định tuyến đến replica gần nhất, điều quan trọng cho cache nhanh. Và nó serverless, nên bạn chỉ trả tiền cho những gì bạn dùng.

Vậy, hãy xem cách chạy Strapi với Upstash Redis!

Điều kiện tiên quyết

Cho hướng dẫn này, bạn cần tài khoản Upstash và cài đặt Node.js. Bạn cũng cần Yarn, trình quản lý gói ưa thích của Strapi.

Tạo dự án Strapi

Bạn có thể trực tiếp đến phần "Thêm REST Cache" nếu bạn đã có dự án Strapi hiện có. Các bước sau chỉ để thiết lập dữ liệu làm việc.

Bước đầu tiên là tạo backend mới với Strapi. Bạn có thể làm điều này với lệnh sau:

$ npx create-strapi-app@latest strapi-upstash-redis-cache

Sau khi lệnh kết thúc, Strapi sẽ mở trình duyệt và hỏi chi tiết đăng nhập admin để tạo mô hình dữ liệu và nội dung đầu tiên.

Mô hình hóa dữ liệu với Content-Type Builder

Sau khi đăng nhập, bạn có thể mô hình hóa tập hợp dữ liệu đầu tiên với Strapi Content-Type Builder. Hình 1 chỉ vị trí Content-Type Builder trong console quản trị Strapi.

Tăng hiệu suất Strapi với Cache Serverless Redis

Nhấp vào liên kết "Create new collection type" và tạo loại mới. Đặt tên "Article" và thêm hai trường văn bản đơn giản. Một trường cho văn bản ngắn tên "title", và một cho văn bản dài tên "content".

Hình 2 cho thấy loại trông như thế nào trước khi nhấp nút "Save".

Tăng hiệu suất Strapi với Cache Serverless Redis

Sau đó, chúng ta cần một instance thực tế của loại nội dung đó.

Tạo nội dung với Content Manager

Bạn có thể thấy vị trí Content Manager ở Hình 1. Điều hướng đến đó và nhấp nút "Create new entry" ở góc trên bên phải.

Ở hình 3, bạn thấy UI nhập nội dung mới. Đừng quên nhấp "Save" và "Publish"; nếu không bạn sẽ có bản nháp riêng tư không truy cập được qua API công khai.

Tăng hiệu suất Strapi với Cache Serverless Redis

Thiết lập quyền cho Content-Type

Chúng ta có loại bài viết và một bài viết thực tế, nhưng nó không truy cập được công khai. Để thay đổi, chúng ta cần cập nhật vai trò public. Hình 4 chỉ vị trí nó trong điều hướng.

Tăng hiệu suất Strapi với Cache Serverless Redis

Nhấp vào vai trò public rồi vào quyền "Article". Tại đây bạn cần chọn "find" và "findOne" và nhấp "Save", như vậy bất kỳ ai mở API đó có thể liệt kê tất cả bài viết và tải một bài viết.

Khi bạn mở tài nguyên articles trong trình duyệt, bạn nên thấy bài viết mới. Cài đặt mặc định Strapi nên cho bạn tài nguyên tại URL sau:

https://localhost:1337/api/articles

Phản hồi nên trông như thế này:

{
    "data": [
        {
            "id": 2,
            "attributes": {
                "title": "My First Article",
                "content": "This is an article!",
                "createdAt": "2022-04-06T15:29:48.104Z",
                "updatedAt": "2022-04-06T15:29:48.949Z",
                "publishedAt": "2022-04-06T15:29:48.948Z"
            }
        }
    ],
    "meta": {
        "pagination": {
            "page": 1,
            "pageSize": 25,
            "pageCount": 1,
            "total": 1
        }
    }
}

Thêm REST Cache

Cuối cùng, phần thú vị: thêm cache với Upstash Redis!

Để làm vậy, bạn trước tiên cần cài ba gói.

yarn add strapi-plugin-redis \
strapi-plugin-rest-cache \
strapi-provider-rest-cache-redis

Ba gói này sẽ cho phép Strapi gửi dữ liệu đến cơ sở dữ liệu Upstash Redis của bạn.

Tạo cơ sở dữ liệu Upstash Redis

Để cấu hình cache đúng, chúng ta cần URL đến một instance Redis. Cho này, chúng ta phải tạo cơ sở dữ liệu Upstash Redis. Vậy mở Upstash Console trong trình duyệt và nhấp nút "Create database".

Sau khi quá trình tạo kết thúc, bạn có thể lấy URL cơ sở dữ liệu, chỉ mất vài giây. Chọn tab "Node", và sao chép URL từ ví dụ mã như thấy ở Hình 5.

Tăng hiệu suất Strapi với Cache Serverless Redis

Cấu hình REST Cache

Để cấu hình REST cache, bạn cần tạo file tại config/plugins.js với nội dung sau:

// config/plugins.js
module.exports = {
    redis: {
        config: {
            connections: {
                default: {
                    connection: "REDIS_URL"
                },
            },
        },
    },
    "rest-cache": {
        config: {
            provider: {
                name: "redis"
            },
            strategy: {
                contentTypes: [{
                    contentType: "api::article.article",
                    hitpass: false
                }],
                //debug: true,
            },
        },
    },
};

Trong trường redis, chúng ta cấu hình kết nối đến cơ sở dữ liệu Upstash Redis. URL từ bước trước chứa tất cả thông tin xác thực Strapi cần.

Trong trường rest-cache, chúng ta báo cho cache provider nào nó nên dùng và loại nội dung nào nên cache. Trong trường hợp của chúng ta, chỉ là loại nội dung article. hitpass: false đảm bảo nội dung luôn được cache, ngay cả khi một số xác thực đã xảy ra.

Nếu bạn bỏ comment debug: true, bạn sẽ thấy một số đầu ra debug. Đầu ra này giúp dễ dàng hơn xem cache có hoạt động không.

Strapi dùng SQLite mặc định, chạy in-process trên máy phát triển của bạn, nên nó sẽ nhanh hơn Upstash Redis triển khai cách đó hàng km. Điều trông sẽ khá khác trong môi trường production với máy chủ cơ sở dữ liệu thực.

Kiểm tra Cache

Sau khi cấu hình mọi thứ đúng, chúng ta có thể khởi động lại máy chủ phát triển:

yarn run develop

Khi máy chủ chạy, chúng ta có thể truy cập lại với URL này:

https://localhost:1337/api/articles

Cơ sở dữ liệu sẽ phục vụ request đầu tiên, và Upstash Redis sẽ làm những request tiếp theo.

Kết luận

Tăng tốc triển khai Strapi chỉ mất vài phút khi dùng Upstash Redis. Upstash Console cho chúng ta một URL chúng ta chỉ cần dán vào config, và xong.

Cơ sở dữ liệu Upstash Redis đầu tiên thậm chí miễn phí, nên hãy xem ngay; không cần thẻ tín dụng!