[5.6] 新功能播报:增加一个 HTTP 头设置缓存中间件

file

这个中间件可以在设置路由的时候简单的设置来设置 HTTP 缓存头。

添加中间件

因为目前 Laravel 只是在 illuminate/http 中添加了这么一个中间件,但是并未添加到 laravel/laravelapp/Http/Kernel.php 中,所以暂时你需要手动添加到 protected $routeMiddleware

protected $routeMiddleware = [
    'cache' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
];

使用

自定义 etag:

Route::get('/my-route', function () {
    return view('welcome');
})->middleware('cache:max_age=180;s_maxage=60;etag=abc;immutable=true');

当然,你也可以使用 response 的 content 进行 md5 作为 etag:

Route::get('/my-route', function () {
    return view('welcome');
})->middleware('cache:max_age=180;s_maxage=60;etag;immutable');

吐槽

虽然在应用层支持了设置缓存头信息,但是目前还没有支持在请求进入前进行一个良好的 If-Not-Match 处理。

参考 PR: https://github.com/laravel/framework/pull/22389

Seven 的代码太渣,欢迎关注我的新拓展包 medz/cors 解决 PHP 项目程序设置跨域需求。