chrisullyott/wayback-cache

此包已被弃用且不再维护。未建议替代包。
此包的最新版本(dev-master)没有可用的许可证信息。

缓存和记录API请求的历史。

dev-master 2017-10-06 17:37 UTC

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_feedweather_data)。这将被用于缓存容器目录中的子目录的名称。

expire (integer or string)

缓存将在多长时间后过期。接受整数(秒数)或以下列表中的友好关键字

过期
minute 每分钟
hourly 每小时
工作日 每八小时
半天 每十二小时
夜间(默认) 每晚午夜
每周 每周日晚上午夜
每月 每月第一天午夜

偏移量 (整数)

将过期时间向后推迟一定秒数。例如,为了让缓存每天凌晨2点过期,将expire设置为夜间,将offset设置为2 * 60 * 60

历史限制 (整数)

设置允许在缓存中保留的最大历史状态(缓存文件)数量。一旦缓存存储了这么多文件,最旧的文件将被删除(午夜后的第一个请求)。默认为10个历史状态。

必须匹配 (字符串)

一个正则表达式,传入内容必须匹配,以便更新缓存。例如:/user_images/

不得匹配 (字符串)

一个正则表达式,传入内容不得匹配,以便更新缓存。例如:/error/

不使用选项数组进行实例化

如果您只需要设置缓存所需的基本选项(键和过期时间),您可以使用这两个参数而不是传递一个数组。

$cache = new Cache('key-name', 'hourly');

贡献

我欢迎任何建议和PR!