laminas-api-tools / api-tools-http-cache
Laminas 模块,提供 http 缓存头支持
Requires
- php: ^7.3 || ~8.0.0 || ~8.1.0
- laminas/laminas-eventmanager: ^3.0.1
- laminas/laminas-http: ^2.13
- laminas/laminas-mvc: ^3.1
- laminas/laminas-zendframework-bridge: ^1.1
Requires (Dev)
- container-interop/container-interop: ^1.1
- laminas/laminas-coding-standard: ~2.3.0
- phpunit/phpunit: ^9.3
- psalm/plugin-phpunit: ^0.16.0
- vimeo/psalm: ^4.2
Replaces
- zfcampus/zf-http-cache: ^1.4.0
README
🇷🇺 俄罗斯公民
我们是 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方法(如 get
、post
等)(由 Laminas\Http\Request::getMethod()
返回)或通配符。
通配符代表所有未指定的HTTP方法。
键: <cache-header-name>
HTTP缓存头名称(如 Cache-control
、expires
、etag
等)。
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_ROUTE
和 MvcEvent::EVENT_FINISH
事件,优先级为 -10000
。