[Laravel 5.8] Laravel 5.8 中缓存的 TTL 单位变更

file

从 Laravel 5.8 开始,传递给缓存驱动的整型存活时间 (TTL) 的单位将由分改为秒,以秒为单位的缓存时间使用户能够更精确地控制缓存持续时间,并符合  PSR-16 :规范。

一个条目的存活时间 (TTL) 是指这个条目从开始存储到过期的时间,TTL 一般由表示秒的整数或一个日期间隔 (DateInterval) 对象指定。

从 Laravel 5.0 到当前稳定的 Laravel 5.7,当你传整数到缓存存储 操作,例如 put() 和 remember(),持续时间都以分钟表示:

Cache::remember('active-posts', 5, function () {
    return Post::active()->get();
});

为了减轻从早期版本 (5.5 或更新版) 到 Laravel 5.8 的升级压力,你还可以将 DateTimeInterface 或 DateInterval 传递到 Cache::put()方法。您现在可以做的是使用 DateTime 或者一个间隔,而不用查找/替换和转换所有时间到秒数,并且可以使你的缓存时间更加清晰:

Cache::remember('active-posts', \DateInterval::createFromDateString('5 minutes'), function () {
    return Post::active()->get();
});

这里有一个使用 Carbon 的 addMinutes() 方法的例子:

Cache::remember('active-posts', now()->addMinutes(5), function () {
    return Post::active()->get();
});

你可以参阅 Dries Vints 为即将推出的 Laravel 5.8 写的 查看变更

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/cache-ttl-chang...

译文地址:https://learnku.com/laravel/t/24088

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4
终生学习者

file

5年前 评论
游离不2

建议用carbon兼容,对升级没有影响

5年前 评论

@游离不2 Carbon 也要改代码 才能兼容吧

5年前 评论

我在这个设置上还真踩过坑,一直以为 TTL 是秒 ---- 其他的各种 TTL 都是秒级。然后看文档才知道是分钟。大意了。
这回改过来了,再好。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!