+2

Php - Tạo cache manager

Chia sẻ
  • 66 1
 Xuất bản thg 5 5, 10:02 SA 66 1 1 1
  • 66 1

Với sự phát triển rầm rộ của công nghệ thông tin trong nhiều năm trở lại đây, số lượng người dùng internet nói chung và các website nó riêng ngày càng tăng và tăng theo cấp số nhân. Điều đó đòi hỏi các website phải tối ưu hoá để phục vụ cho nhu cầu cao của người dùng. Với những ưu điểm điển hình như: tăng tốc độ truy cập dữ liệu, giảm tải cho hệ thống, tiết kiệm băng thông và tài nguyên máy chủ, cải thiện trải nghiệm người dùng, tiết kiệm chi phí...Đây là lúc bộ nhớ đệm (cache) khẳng định vai trò của mình.

Có rất nhiều thư viện(library) cache mạnh mẽ của php, điển hình như spatie/laravel-responsecache, PHPSocialNetwork/phpfastcache, symfony/cache-contracts. Tuy nhiên, không phải lúc nào chúng ta cũng có thể dùng thư viện trên vì tính tương thích của chúng, hoặc đơn giản là không được phép sử dụng vì sự phụ thuộc lớn vào chúng dẫn đến khó control lỗi.

Trong series này, mình sẽ cùng các bạn xây dựng một trình quản lý cache đơn giản để giúp các bạn hiểu rõ hơn về cache và có thể xây dựng một ứng dụng cache cho riêng mình.

Cấu trúc thư mục sẽ được xây dựng như sau:

|- Cache
|    |-CacheManager.php
|    |-FileStore.php
|    |-MemcacheStore.php
|    |-RedisStore.php
|- Contract
|    | Cache.php
|- Memcache
|    |- Connector.php
|- File
|    |- Storage.php
|- Redis
|    |- Connector.php

Chúng ta sẽ sử dụng chính CacheManager.php để tương tác với các trình lưu trữ cache khác như FileStore, MemcacheStore, RedisStore. Các trình lưu trữ này sẽ phải implements Contract\Cache. Mình chia các Connector ra thành các thư mục con vì chúng chỉ làm nhiệm vụ kết nối, và có thể sử dụng lại chúng trong các mục đích khác như làm queue, database...

Với các bạn đã quen với design pattern thì có thể thấy rằng nó giống với Adapter pattern, tuân thủ theo nguyên lý SOLID, giúp code tường minh hơn và tăng tính tái sử dụng của code...vân vân và mây mây.

Chia sẻ

BÌNH LUẬN


Avatar Phạm Tiến Đạt @datpt16031996
thg 5 7, 2:03 CH

Mong bạn ra nhiều bài hơn 😁

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí