Liên hệ
Ủng hộ, đăng ký theo dõi kênh

PSR-6: Giao diện Caching

Tiêu chuẩn về giao diện lưu trữ tạm để cải thiện tốc độ ứng dụng trong PHP

Caching là cách thông dụng để tăng tốc hiệu năng các ứng dụng, việc tạo ra thư viện chuyên về tạo cache, đọc cache là yêu cầu cần thiết của bất kỳ dự án nào.

Mục tiêu

Mục tiêu của tiêu chuẩn này cho phép các lập trình viên tạo ra các thư viện cache mà nó có thể tích hợp với các framework các hệ thống mà không cần phải phát triển riêng.

Một số định nghĩa

Calling Library - Thư viện hoặc code cần dịch vụ cache (code mà bạn có sử dụng cache). Code này sẽ sử dụng các dịch vụ cache đã được triển khai từ giao diện cache chuẩn mà không cần biết về cách triển khai mã những dịch vụ cache từ chuẩn ra sao.

Thư viện triển khai - thư viện này tương xứng với việc triển khai tiêu chuẩn theo đúng quy tắc để cung cấp dịch vụ tạo cache nho Calling Library.  Thư viện triển khai này PHẢI cung cấp các lớp triển khai từ giao diện Cache\CacheItemPoolInterface và Cache\CacheItemInterface, PHẢI hỗ trợ hàm về TTL mô tả dưới đây.

TTL - The Time To Live - Thời gian sống của một mục lưu cache nào đó, đó là khoảng thời gian tính từ lúc bắt đầu lưu tới lúc mục đó được coi là đã cũ (cần cập nhật lại). TTL thường định nghĩa bởi một số nguyên hiểu là số giây hoặc một đối tượng DateInterval.

Expiration - La thời điểm mà một mục lưu trữ trở thành đã cũ. Thời hạn này được tính toán và thay đổi bởi TTL ngoài ra nó cũng có thể thiết lập bởi cung cấp một đối tượng DateTime.Key - Trong cache, key là một chuỗi tối thiểu có 1 ký tự để xác định tới mục lưu trữ cache. Triển khai thư viện PHẢI hỗ trỡ key này với tên cấu tạo từ A-Z, a-z, 0-9, _, . và dùng UTF-8 với chiều dài chuỗi tới 64 ký tự. Các ký tự sau không dùng trong Key: {}()/\@

Hit - là số lần Calling Libray truy vấn đến mục cache bằng Key ở trên và truy vấn này là có được kết quả giá trị tương ứng với Key, giá trị này vẫn chưa hết hạn sử dụng.

Miss - có nghĩa truy vấn mục cache lưu trự bằng một key nào đó thì không tìm thấy hoặc tìm thấy thì giá trị bị hết hạn. Một giá trị mà bị hết hạn PHẢI xem nó như là một Miss.

Các giao diện chuẩn cho Cache

CacheItemInterface

Giao diện này định nghĩa một mục lưu trong hệ thống cache. 

<?php

namespace Psr\Cache;


interface CacheItemInterface
{
    public function getKey();
    public function get();
    public function isHit(); 
    public function set($value);
    public function expiresAt($expiration);
    public function expiresAfter($time);

}

CacheItemPoolInterface

Lớp này mục đích nhận key từ Calling Library và trả về đối tượng CacheItemInterface.

<?php

namespace Psr\Cache;

interface CacheItemPoolInterface
{
    public function getItem($key);
    public function getItems(array $keys = array());
    public function hasItem($key);
    public function clear();
    public function deleteItem($key);
    public function deleteItems(array $keys);
    public function save(CacheItemInterface $item); 
    public function saveDeferred(CacheItemInterface $item);
    public function commit();
}

Lớp về Exception của cache

<?php

namespace Psr\Cache;

interface CacheException
{
}
<?php

namespace Psr\Cache;

interface InvalidArgumentException extends CacheException
{
}

Một số framework, thư viện hỗ trợ PSR - 6 bạn có thể sử dụng ngay:

  • http://symfony.com/doc/current/components/cache.html
  • https://github.com/php-cache (hỗ trợ PRS-6 cho memcached, filesytem cache ...)
  •  

Vui lòng đăng ký ủng hộ kênh