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

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 项目程序设置跨域需求。

本帖由 Summer 于 10个月前 加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 1

这个 PR 是一个 Symfony 核心开发组员提交的

10个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!