Laravel 5.8 新特性系列 —— 缓存有效期单位调整
从 Laravel 5.8 开始,传递到缓存驱动的表示缓存有效期(TTL)的整型数据单位将会从分钟调整为秒,秒级缓存会使得开发者得以对缓存周期进行更加细粒度的控制,并且符合 PSR-16 标准:
The Time To Live (TTL) of an item is the amount of time between when that item is stored, and it is considered stale. The TTL is normally defined by an integer representing time in seconds, or a DateInterval object.
中文翻译过来大意是:事物的有效期(TTL)指的是其从保存到失效之间的时间量,TTL的单位通常被定义为秒级,或者一个 DateIntervel 对象。
从 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()
方法,而不必将所有调用处的数据单位转化为秒,通过这种方式调用的另一个好处是可以对缓存时间有更加清晰和多维的控制:
Cache::remember('active-posts', \DateInterval::createFromDateString('5 minutes'), function () {
return Post::active()->get();
});
下面是一个使用 Carbon 的 addMinutes()
方法的示例,该方法返回的是一个 DateTime
对象:
Cache::remember('active-posts', now()->addMinutes(5), function () {
return Post::active()->get();
});
你可以在这里看到即将发布的 Laravel 5.8 版本的这条更新。
注:本文整理翻译自 Laravel News。
2 Comments
laravel是太阳系更新最积极的php框架吧
哈哈 没办法 谁让 Symfony 也是半年一更新呢 Laravel 底层好多组件都是基于 Symfony 的