chrisullyott / wayback-cache
缓存和记录API请求的历史。
Requires
- php: >=5.6.0
- chrisullyott/php-file: dev-master
- chrisullyott/php-log: dev-master
This package is auto-updated.
Last update: 2020-01-20 08:31:09 UTC
README
一个精心制作的简单文件系统缓存 (由care创建)。轻松且负责任地缓存第三方API的响应。
<?php
$cache = new Cache(array(
'container' => $_SERVER['DOCUMENT_ROOT'] . '/cache',
'key' => 'test-instance',
'expire' => 'hourly'
));
$url = 'http://ip-api.com/json/wired.com';
$data = $cache->getByUrl($url);
echo $data . "\n";
功能
- 灵活性。管理多个缓存,每个缓存都有自己的规则和过期频率。
- 回退。对于大多数网站,旧内容比没有内容好。如果任何API请求失败,缓存将返回最新内容,直到下一次请求。
- 简单的速率限制。当主机报告剩余请求很少时,缓存将返回最新内容,直到主机的速率限制重置。
- 历史状态。缓存中存储了多个之前的请求以供将来参考。
- 小型占位。每晚自动删除旧的或无关的缓存文件。
安装
使用Composer
"require": {
"chrisullyott/wayback-cache": "dev-master"
}
方法
get()
从缓存中读取最新内容,或者如果已过期则返回 FALSE
。
set()
使用新内容更新缓存并增加过期时间。
getByUrl()
是 get()
和 set()
的组合,其中最新内容要么从缓存返回,要么在过期时从URL请求并重新缓存。
为了避免遇到主机的速率限制问题,传递速率限制头信息(剩余数量和重置时间),此方法将在您被封禁之前停止请求。
例如,从 Vimeo API
$data = $cache->getByUrl($url, 'X-RateLimit-Remaining', 'X-RateLimit-Reset');
选项
缓存选项设置为传递给实例化对象的相关数组(见上面)。
container (string)
设置父缓存目录的路径,其中将存储此缓存实例。如果路径不存在,则创建。默认为 cache
。对于网站,您可以使用
$_SERVER['DOCUMENT_ROOT'] . '/_cache'
key (string)
此特定缓存实例的标识符(例如,instagram_feed
或 weather_data
)。这将被用于缓存容器目录中的子目录的名称。
expire (integer or string)
缓存将在多长时间后过期。接受整数(秒数)或以下列表中的友好关键字
值 | 过期 |
---|---|
minute | 每分钟 |
hourly | 每小时 |
工作日 | 每八小时 |
半天 | 每十二小时 |
夜间(默认) | 每晚午夜 |
每周 | 每周日晚上午夜 |
每月 | 每月第一天午夜 |
偏移量 (整数)
将过期时间向后推迟一定秒数。例如,为了让缓存每天凌晨2点过期,将expire
设置为夜间
,将offset
设置为2 * 60 * 60
。
历史限制 (整数)
设置允许在缓存中保留的最大历史状态(缓存文件)数量。一旦缓存存储了这么多文件,最旧的文件将被删除(午夜后的第一个请求)。默认为10个历史状态。
必须匹配 (字符串)
一个正则表达式,传入内容必须匹配,以便更新缓存。例如:/user_images/
不得匹配 (字符串)
一个正则表达式,传入内容不得匹配,以便更新缓存。例如:/error/
不使用选项数组进行实例化
如果您只需要设置缓存所需的基本选项(键和过期时间),您可以使用这两个参数而不是传递一个数组。
$cache = new Cache('key-name', 'hourly');
贡献
我欢迎任何建议和PR!