laminas-api-tools/api-tools-http-cache

Laminas 模块,提供 http 缓存头支持

1.6.0 2021-12-09 13:32 UTC

This package is auto-updated.

Last update: 2024-09-08 20:54:13 UTC


README

Build Status

🇷🇺 俄罗斯公民

我们是 Laminas 的参与者,来自不同的国家。我们中的许多人都有在俄罗斯和乌克兰的朋友、亲戚和同事。我们中的一些人出生在俄罗斯。我们中的一些人现在住在俄罗斯。我们中的一些人的祖父母在第二次世界大战中与法西斯作战。这里没有人支持法西斯主义。

我们中的一员有一个乌克兰亲戚,她和儿子一起逃离了家园。由于前方的轰炸,火车延误了。我们有一些朋友在防空洞里躲避。我们在空袭后焦虑地关注他们的消息,空袭无差别地攻击医院、学校、幼儿园和房屋。我们不是从任何媒体得到这个消息。这是我们亲身体验的。

您信任我们足够使用我们的程序,我们请求您再次信任我们。我们需要帮助。走出家门,抗议这场毫无意义的战争。停止杀戮。说“不,战争!”

🇺🇸 致俄罗斯公民

我们来自世界各地的 Laminas 团队。我们中的许多人都有在俄罗斯和乌克兰的朋友、家人和同事。我们中的一些人出生在俄罗斯。我们中的一些人现在住在俄罗斯。我们中的一些人的祖父母在第二次世界大战中与纳粹作战。这里没有人支持法西斯主义。

我们的一名团队成员有一个乌克兰亲戚,她和儿子一起逃离了家园。由于前方的轰炸,火车延误了。我们有一些朋友在防空洞里躲避。我们在空袭后焦虑地关注他们的消息,空袭无差别地攻击医院、学校、幼儿园和房屋。我们不是从任何媒体得到这个消息。这是我们亲身体验的。

您信任我们足够使用我们的软件。我们请求您信任我们说出真相。我们需要您的帮助。走出家门,抗议这场无意义的战争。停止杀戮。说“停止战争!”

简介

api-tools-http-cache 是一个 Laminas 模块,用于自动化 Laminas 应用程序中的 http 缓存任务。

安装

运行以下 composer 命令

$ composer require "laminas-api-tools/api-tools-http-cache:^1.0"

或者,手动将以下内容添加到您的 composer.json 文件中的 require 部分

"require": {
    "laminas-api-tools/api-tools-http-cache": "^1.0"
}

然后运行 composer update 确保模块已安装。

最后,将模块名称添加到项目配置文件 config/application.config.php 中的 modules 键下

return [
    /* ... */
    'modules' => [
        /* ... */
        'Laminas\ApiTools\HttpCache',
    ],
    /* ... */
];

配置

用户配置

一般来说,应尽可能避免使用匿名函数,因为它会阻止您缓存配置。

本模块用户配置的最高级配置键是 api-tools-http-cache

config/module.config.php 文件包含一个自解释的配置示例。

键:controllers

controllers 键用于映射以下任一项

  • 路由名称
  • 连接的 controller::action
  • 控制器
  • 正则表达式
  • 通配符

每个都是区分大小写的,并将一个或多个 HTTP 方法映射到特定规则的缓存头配置。

示例

// See `config/module.config.php` for a complete commented example
'api-tools-http-cache' => [
    /* ... */
    'controllers' => [
        '<controller>' => [
            '<http-method>'  => [
                '<cache-header-name>' => [
                    'override' => true,
                    'value'    => '<cache-header-value>',
                ],
            ],
        ],
    ],
    /* ... */
],    
键:<controller>

可以是以下之一

  • 连接的 $controller::$action
  • 控制器名称(由 Laminas\Mvc\MvcEvent::getRouteMatch()->getParam('controller') 返回;值为大小写敏感)
  • 正则表达式(见 <regex_delimiter> 键)
  • 通配符

通配符匹配任何未指定的控制器。

键: <http-method>

可以是小写的HTTP方法(如 getpost 等)(由 Laminas\Http\Request::getMethod() 返回)或通配符。

通配符代表所有未指定的HTTP方法。

键: <cache-header-name>

HTTP缓存头名称(如 Cache-controlexpiresetag 等)。

ETags

对于ETags,您可以在配置中指定自定义生成器

'etag' => [
    'override' => true,
    'generator' => 'Your\Own\ETagGenerator',
],

生成器示例可以在 \Laminas\ApiTools\HttpCache\DefaultETagGenerator 中找到。

键: <cache-header-value>

缓存头的值。

键: override

是否要覆盖由您的应用程序发送的可能缓存的缓存头。

键: enable

enable 键用于在运行时启用/禁用http缓存模块。

如果您不再需要此模块,请考虑从 application.config.php 列表中删除模块。

注意:当禁用时,http缓存模块不会覆盖/删除由您的应用程序发送的缓存头。

示例

'api-tools-http-cache' => [
    /* ... */
    'enable' => true, // Cache module is enabled.
    /* ... */
],

键: http_codes_black_list

http_codes_black_list 用于避免缓存具有列出HTTP状态码的响应。默认为除了 200 以外的所有状态码。

示例

'api-tools-http-cache' => [
    /* ... */
    'http_codes_black_list' => ['201', '304', '400', '500'], // Whatever the other configurations, the responses with these HTTP codes won't be cached.
    /* ... */
],

键: regex_delimiter

此键用于启用将键作为正则表达式进行评估。

它必须包含正则表达式的分隔符。

如果您不想在配置中使用正则表达式,请将其设置为null以避免无效解析。

正则表达式按其在配置中出现的顺序进行测试,第一个匹配成功。

正则表达式胜过通配符。

注意:当此值不为空且没有文字键与当前控制器相对应时,将使用preg_match。

示例

'api-tools-http-cache' => [
    /* ... */
    'regex_delimiter' => '~',
    /* ... */
    'controllers' => [
        '~.*~' => [ // Acts as a wildcard.
            /* ... */
        ],
    ],
    /* ... */
],

系统配置

以下配置在 config/module.config.php 中提供

'service_manager' => [
    'factories' => [
        'Laminas\ApiTools\HttpCache\HttpCacheListener' => 'Laminas\ApiTools\HttpCache\HttpCacheListenerFactory',
    ],
],

Laminas事件

监听器

Laminas\ApiTools\HttpCache\HttpCacheListener

此监听器附加到 MvcEvent::EVENT_ROUTEMvcEvent::EVENT_FINISH 事件,优先级为 -10000