spektra2147/laravel-httpcache

Laravel的HttpCache

1.0 2023-11-11 14:05 UTC

This package is not auto-updated.

Last update: 2024-09-15 16:33:44 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
});

您可以在 Kernel 中使用提供的 SetTtl 中间件来简化此操作

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 文档