Laravel提供的缓存工具很好用,手册里介绍了一些基本的用法,比如get,put,forget,forever等,一开始我是像下面这样使用的:
if (!$article = Cache::get('article_1')) { $article = Article::find(1); Cache::forever('article_1',$article); }
这是最基本的用法,自动判断缓存是否存在,不存在则从数据库中取并写入缓存。
后来发现模型也自带remember 和 rememberForever方法,例如可以这样:
$article = Article::rememberForever('article_1')->where('id','=',1);
这个有局限性,在复杂查询时并不能完全缓存数据,比如使用了with()预加载关联数据时就无法缓存关联数据。
然后发现Cache也可以像Response那样自定义宏方法,遂作如下尝试:
//注册缓存存取宏 Cache::macro('want',function($key,$minutes=0,$callback){ if (!$data = Cache::get($key)) { $data = call_user_func($callback); if ($minutes == 0) { Cache::forever($key,$data); } else { Cache::put($key,$data,$minutes); } } return $data; });
这个方法可以放在bootstrap/start.php里,也可以放在filter中的App::before()中,随自己项目方便吧,看下如何使用的:
$id = Input::get('id'); $article = Cache::want('article_'.$id,0,function() use ($id){ return Article::with('tags')->findOrFail($id,['id','cid','title','content_html as content','created_at','updated_at']); });
个人挺喜欢这种写法的。希望大家能够喜欢本文内容。
Laravel Eloquent Query Cache Laravel Eloquent Query Cache brings back the remember() functionality that has been removed from Laravel a long time ago.It adds caching functionalities directly on the El
本文向大家介绍分享一个常用的javascript静态类,包括了分享一个常用的javascript静态类的使用技巧和注意事项,需要的朋友参考一下 废话不多说,直接奉上代码,知道干啥用的小伙伴直接带走吧。 是不是相当不错呢,反正我是很满意。
本文向大家介绍分享一款超好用的JavaScript 打包压缩工具,包括了分享一款超好用的JavaScript 打包压缩工具的使用技巧和注意事项,需要的朋友参考一下 背景 平时大家在开发 Js 项目的时候,可能已经离不开 webpack 等打包工具了。而 webpack 打包速度大概就是“能用“的水平。大概去年开始,我就开始在构想,如果能写一个极速的打包工具,功能未必需要很强,可能对小项目非常有用。
本文向大家介绍分享个简单易懂且非常有用的laravel事件,包括了分享个简单易懂且非常有用的laravel事件的使用技巧和注意事项,需要的朋友参考一下 前言 在开始本文的正文之前,我们先说一下在什么场景会使用这个事件功能。 事情大概是这样的,需求要在用户注册的时候发一些帮助邮件给用户(原本用户在注册之后已经有发别的邮件的了,短信,IM什么的) 原来这个注册的方法也就10多行代码。但是有时候我们为了
本文向大家介绍简单好用的nodejs 爬虫框架分享,包括了简单好用的nodejs 爬虫框架分享的使用技巧和注意事项,需要的朋友参考一下 这个就是一篇介绍爬虫框架的文章,开头就不说什么剧情了。什么最近一个项目了,什么分享新知了,剧情是挺好,但介绍的很初级,根本就没有办法应用,不支持队列的爬虫,都是耍流氓。 所以我就先来举一个例子,看一下这个爬虫框架是多么简单并可用。 第一步:安装 Crawl-pet
本文向大家介绍分享一个简单的sql注入,包括了分享一个简单的sql注入的使用技巧和注意事项,需要的朋友参考一下 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站