smartondev/httpcache

简单的HTTP缓存管理库

0.5.0 2024-08-28 02:25 UTC

This package is auto-updated.

Last update: 2024-10-03 00:35:13 UTC


README

GitHub Release GitHub License GitHub Actions Workflow Status Coverage Status Codecov

此包可以帮助您构建HTTP缓存头,如Cache-ControlETag以及匹配器如If-None-MatchIf-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();

更多文档

贡献

请参阅CONTRIBUTING以获取详细信息。

许可证

本项目是开源软件,许可协议如下。

作者