barryvdh/laravel-httpcache

Laravel的HttpCache

v1.0.1 2024-03-09 19:22 UTC

README

Tests Packagist License Latest Stable Version Total Downloads Fruitcake

Laravel可以使用HttpKernelInterface 中间件,因此也可以使用HttpCache。此包提供了一个简单的 ServiceProvider,以帮助您开始使用 HttpCache。

首先,使用 composer 安装此包

composer require barryvdh/laravel-httpcache

更新后,将 ServiceProvider 添加到 app/config/app.php 中的 providers 数组

'Barryvdh\HttpCache\ServiceProvider',

现在您可以添加 Middleware 到您的 Kernel

'Barryvdh\HttpCache\Middleware\CacheRequests',

缓存现在已启用,针对公共响应。只需设置 Ttl 或 MaxSharedAge

Route::get('my-page', function(){
   return Response::make('Hello!')->setTtl(60); // Cache 1 minute
});

您可以使用提供的 SetTtl middleware 来简化这一过程

protected $routeMiddleware = [
    // ...
    'ttl' => \Barryvdh\HttpCache\Middleware\SetTtl::class,
];

Route::get('my-page', function(){
   return 'Hello' 
})->middleware('ttl:60'); // Cache 1 minute

发布配置以更改一些选项(缓存目录、默认 Ttl 等)或启用 ESI。

$ php artisan vendor:publish --provider="Barryvdh\HttpCache\ServiceProvider"

直接方法,不使用 ServiceProvider

注意:这仍处于测试阶段,请谨慎测试。它应该更快,但灵活性较低,因为它启动较早。

您也可以将 Kernel 包裹在 HttpCache 中,在您的 public/index.php 中。替换 '运行应用程序' 部分如下

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

$kernel = \Barryvdh\HttpCache\CacheKernel::wrap($kernel);

$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);

$response->send();

$kernel->terminate($request, $response);

ESI

在您的配置文件中启用 ESI 并将 Esi Middleware 添加到您的 Kernel

'Barryvdh\HttpCache\Middleware\ParseEsi',

现在您可以在布局中定义 ESI 包含

<esi:include src="<?= url('partial/page') ?>"/>

这将渲染部分/页面,具有自己的 Ttl。页面的其余部分将保持缓存(使用自己的 Ttl)

清除/刷新缓存

您可以清除单个 URL 或仅删除整个缓存目录

App::make('http_cache.store')->purge($url);
\File::cleanDirectory(app('http_cache.cache_dir'));

或使用 Artisan httpcache:clear 命令

$ php artisan httpcache:clear

更多信息

有关更多信息,请阅读关于 Symfony HttpCache 的文档