smartondev / httpcache
简单的HTTP缓存管理库
0.5.0
2024-08-28 02:25 UTC
Requires
- php: ^8.2
Requires (Dev)
- phpunit/phpunit: ^11.0
README
此包可以帮助您构建HTTP缓存头,如Cache-Control
、ETag
以及匹配器如If-None-Match
、If-Modified-Since
。它对在您的应用程序中构建HTTP缓存头和匹配器非常有用。
安装
composer require smartondev/httpcache
使用
use SmartonDev\HttpCache\Builders\CacheHeaderBuilder; use SmartonDev\HttpCache\Builders\ETagHeaderBuilder; use SmartonDev\HttpCache\Matchers\ETagMatcher; use SmartonDev\HttpCache\Matchers\ModifiedMatcher; // max-age 30 day, private, no-store $headers = (new CacheHeaderBuilder()) ->maxAge(hours: 30) ->private() ->noStore() ->toHeaders(); // max-age 60 sec, shared max age 120 sec, stale-while-revalidate 30 sec $headers = (new CacheHeaderBuilder()) ->maxAge(60) ->sharedMaxAge(120) ->staleWhileRevalidate(30) ->toHeaders(); // etag $etagMatcher = (new ETagMatcher()) ->headers($requestHeaders); $etagHeaderBuilder = (new ETagHeaderBuilder()) ->computedEtag() if($etagMatcher->matches($etag)->matches()) { // 304 Not Modified return response(null, 304); } // modified since $modifiedMatcher = (new ModifiedMatcher()) ->headers($requestHeaders); if($modifiedMatcher->matches($lastModified)->matchesModifiedAt()) { // 304 Not Modified return response(null, 304); }
无缓存
$noCacheHeaders = (new CacheHeaderBuilder()) ->noCache() ->toHeaders();
持续时间
$builder = (new CacheHeaderBuilder()) ->maxAge(30) // 30 sec ->maxAge(seconds: 30) // 30 sec ->maxAge(minutes: 30) // 30 min ->maxAge(hours: 30) // 30 hours ->maxAge(days: 30) // 30 days ->maxAge(weeks: 30) // 30 weeks ->maxAge(months: 30) // 30 months ->maxAge(years: 30) // 30 years ->maxAge(days: 10, hours: 5, minutes: 30) // 10 days 5 hours 30 minutes
可变和不可变访问器
- 以
with
为前缀的方法是不可变的,例如withMaxAge()
。没有with
前缀的方法是可变的,例如maxAge()
。 - 以
without
为前缀的方法是不可变的,例如withoutMaxAge()
。以reset
为前缀的方法是可变的,例如resetMaxAge()
。
$builderA = new CacheHeaderBuilder(); // mutable $builderA->maxAge(30); $builderA->resetMaxAge(); // immutable $builderB = $builderA->withMaxAge(60); $builderC = $builderB->withoutMaxAge();
更多文档
- CacheHeaderBuilder:构建如
Cache-Control
这样的缓存头 - ETagHeaderBuilder:构建ETag头
- ETagMatcher:匹配如
If-Match
、If-None-Match
这样的ETag头 - ModifiedMatcher:匹配如
If-Modified-Since
、If-Unmodified-Since
这样的修改头
贡献
请参阅CONTRIBUTING以获取详细信息。
许可证
本项目是开源软件,许可协议如下。