[Laravel 5.8] Laravel 5.8 中缓存的 TTL 单位变更
从 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 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
建议用carbon兼容,对升级没有影响
@游离不2 Carbon 也要改代码 才能兼容吧
我在这个设置上还真踩过坑,一直以为 TTL 是秒 ---- 其他的各种 TTL 都是秒级。然后看文档才知道是分钟。大意了。
这回改过来了,再好。