Computer >> Máy Tính >  >> Lập trình >> Redis

Bộ nhớ đệm Redis không máy chủ cho Strapi

Việc giao một dự án đúng thời hạn thường có nghĩa là bạn cần tận dụng nhiều công nghệ hiện có nhất có thể. Mọi quyết định bạn đưa ra dẫn đến việc 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 tại sao các công cụ mã nguồn mở như Strapi là cách để xây dựng API REST cho dự án tiếp theo của bạn.

Strapi là một CMS không đầu hiện đại. Nó cho phép bạn xác định lược đồ của mình bằng giao diện đồ họa, vì vậy ngay cả những người không chuyên về kỹ thuật cũng có thể lập mô hình dữ liệu. Nhóm phát triển của bạn có thể tập trung vào việc xây dựng ứng dụng web và thiết bị di động, đồng thời cung cấp các tính năng mới mà không cần lo lắng về việc triển khai chương trình phụ trợ. Rốt cuộc, một cộng đồng mã nguồn mở lớn đang duy trì Strapi.

Tăng tốc độ Backend của bạn

Giờ đây, Strapi tương đối nhanh chóng trong việc gửi phản hồi khi sử dụng SQLite, nhưng khi dữ liệu và cơ sở người dùng của bạn phát triển, đây có thể không phải là giải pháp tốt nhất để bắt đầu. Sau khi tung ra thị trường, bạn có thể có hàng nghìn người dùng được phân phối trên toàn cầu.

Vì vậy, bạn cần mở rộng quy mô Strapi của mình và đến lượt nó, các triển khai cơ sở dữ liệu của bạn để xử lý tất cả tải đó. Sẽ thật tuyệt nếu bạn chỉ cần cắm vào một số loại bộ nhớ đệm?

Nhập REST Cache

Strapi REST Cache là một bộ sưu tập các plugin Strapi. Chúng giúp bạn thêm bộ nhớ đệm LRU vào ứng dụng Strapi của mình, giảm yêu cầu cơ sở dữ liệu thực tế.

Bộ nhớ, Couchbase và Redis được hỗ trợ và bạn thậm chí có thể viết một trình cung cấp tùy chỉnh. Phần thú vị ở đây là nhà cung cấp bộ nhớ đệm Redis cho phép chúng tôi kết nối với Upstash Redis trong vài phút!

Bạn có thể sử dụng Upstash Redis trong hầu hết các trường hợp bạn sẽ sử dụng Redis. Sự khác biệt là bạn có thể thiết lập Upstash Redis với một vài cú nhấp chuột. Nó cũng đi kèm với tính năng sao chép toàn cầu, vì vậy các cá thể Strapi của bạn sẽ được chuyển đến bản sao gần nhất, điều này rất quan trọng đối với bộ nhớ cache nhanh. Và nó không có máy chủ, vì vậy bạn chỉ phải trả tiền cho những gì bạn sử dụng.

Vì vậy, hãy xem cách chúng tôi có thể thiết lập và chạy Strapi với Upstash Redis!

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

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

Tạo dự án Strapi

Bạn có thể đi thẳng đến phần “Thêm bộ nhớ cache REST” nếu bạn đã có một 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 một chương trình phụ trợ mới với Strapi. Bạn có thể thực hiện việc này bằng 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à yêu cầu bạn cung cấp chi tiết đăng nhập quản trị viên để tạo mô hình dữ liệu và nội dung đầu tiên.

Dữ liệu tạo mô hình với Trình tạo kiểu nội dung

Sau khi đăng nhập, bạn có thể lập mô hình bộ sưu tập dữ liệu đầu tiên của mình bằng Trình tạo kiểu nội dung Strapi. Hình 1 cho thấy nơi bạn có thể tìm thấy Trình tạo kiểu nội dung trong bảng điều khiển dành cho quản trị viên Strapi.

Bộ nhớ đệm Redis không máy chủ cho Strapi

Nhấp vào liên kết "Tạo loại bộ sưu tập mới" và tạo một loại mới. Đặt tên là “Article” và thêm hai trường văn bản đơn giản. Một trường dành cho văn bản ngắn được gọi là “tiêu đề” và một trường dành cho văn bản dài được gọi là “nội dung”.

Hình 2 cho thấy loại sẽ trông như thế nào trước khi nhấp vào nút “Lưu”.

Bộ nhớ đệm Redis không máy chủ cho Strapi

Sau đó, chúng tôi cần một phiên bản thực tế của loại nội dung đó.

Tạo nội dung bằng Trình quản lý nội dung

Bạn có thể thấy vị trí của Trình quản lý nội dung trong Hình 1. Điều hướng đến nó và nhấp vào nút “Tạo mục nhập mới” ở trên cùng bên phải.

Trong hình 3, bạn có thể thấy giao diện người dùng mục nhập nội dung mới. Đừng quên nhấp vào nút “Lưu” và “Xuất bản”; nếu không, bạn sẽ có một bản nháp riêng tư không thể truy cập được qua API công khai.

Bộ nhớ đệm Redis không máy chủ cho Strapi

Đặt quyền cho Loại nội dung

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

Bộ nhớ đệm Redis không máy chủ cho Strapi

Nhấp vào vai trò công khai và sau đó nhấp vào quyền "Bài viết". Ở đây, bạn cần chọn “find” và “findOne” và nhấp vào “Save” theo cách này, bất kỳ ai mở API đó đều có thể liệt kê tất cả các bài báo và tải một bài báo.

Khi bạn mở tài nguyên bài viết trong trình duyệt, bạn sẽ thấy bài viết mới của chúng tôi. Cài đặt Strapi mặc định sẽ cung cấp cho bạn tài nguyên tại URL sau:

https://localhost:1337/api/articles

Câu trả lời sẽ giống như sau:

{
  "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ị của việc thêm bộ nhớ đệm với Upstash Redis!

Để làm như vậy, trước tiên bạn cần cài đặt 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

Để định cấu hình bộ đệm chính xác, chúng tôi cần một URL đến một phiên bản Redis. Đối với điều này, chúng tôi phải tạo cơ sở dữ liệu Upstash Redis. Vì vậy, hãy mở Upstash Console trong trình duyệt của bạn và nhấp vào nút “Tạo cơ sở dữ liệu”.

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ư trong Hình 5.

Bộ nhớ đệm Redis không máy chủ cho Strapi

Định cấu hình REST Cache

Để định cấu hình bộ đệm REST, bạn cần tạo một tệp 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 redis , chúng tôi định cấu hình kết nối với 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 mà Strapi cần.

Trong trường rest-cache, chúng tôi cho bộ nhớ cache biết nhà cung cấp nào nó nên sử dụng và loại nội dung nào nên được lưu vào bộ nhớ cache. Trong trường hợp của chúng tôi, đó chỉ là loại nội dung bài viết. hitpass: false đảm bảo nội dung luôn được lưu vào bộ nhớ đệm, ngay cả khi một số xác thực đã xảy ra.

Nếu bạn bỏ nhận xét thì debug: true , bạn sẽ thấy một số đầu ra gỡ lỗi. Kết quả này giúp bạn dễ dàng xem bộ nhớ đệm có hoạt động hay không.

Strapi sử dụng SQLite làm mặc định, chạy trong quá trình trên máy tính phát triển của bạn, vì vậy nó sẽ nhanh hơn so với Upstash Redis được triển khai cách xa hệ thống này hàng km. Mọi thứ sẽ trông khá khác trong môi trường sản xuất với máy chủ cơ sở dữ liệu thực.

Kiểm tra bộ nhớ cache

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

yarn run develop

Khi máy chủ khởi động và đang chạy, chúng tôi có thể truy cập lại bằng URL này:

https://localhost:1337/api/articles

Cơ sở dữ liệu của chúng tôi sẽ phục vụ yêu cầu đầu tiên và Upstash Redis sẽ thực hiện những việc sau.

Kết luận

Việc tăng tốc triển khai Strapi chỉ mất vài phút khi chúng tôi sử dụng Upstash Redis. Upstash Console cung cấp cho chúng tôi một URL mà chúng tôi có thể chỉ cần dán vào cấu hình và thế là xong.

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