位置:搜学搜课 > 新闻 > 南宁PHP培训机构哪个更好
互联网公司井喷式增长,人才需求急切,大型公司上门招聘PHP工程师!
PHP软件工程师的前景和未来?
点击咨询Nignx
THinkphp
YII框架
Nosql
Smarty
PHP7.0
HTML5
CSS3
jQuery
PHP+
PHP+打通了WEB开发的前后端,PC及移动端,让php工程师不仅可以开发网站更可以开发APP
达内始终贯彻实战组合授课,实现真正"实战授课",学员在报名时与达内签订《指定授课讲师承诺书》坚决杜绝宣传讲师与实际授课讲师不一致情况,确保学员利益。
从PC到移动,十余个核心项目实战开发、跨端开发,独立空间域名项目上线
基础差学不会?
学历低、基础弱学不会? 针对低学历的学员开设辅导班,从较基础的电脑操作教起,项目经理一对一辅导。
上课听不懂?
上课时项目经理全程陪同,有任何听不懂的地方,举手示意,项目经理会时间为您解疑答惑。
晚自习求辅导?
晚自习有问题害怕找不到老师解答?项目经理晚自习时也会陪在你身边,进行当天知识点串讲及难点辅导。
学习效果不理想?
晚自习有问题害怕找不到老师解答?项目经理晚自习时也会陪在你身边,进行当天知识点串讲及难点辅导。
学习管理
每月根据学员学习进展,进行针对性访谈与指导,调整学员各阶段心态,确保学习进度。
模拟面试
对学员进行简历指导及多轮模拟面试,从简历、技术、人事、作品四个层面助你提升,帮你成功面试。
课外提升
周末邀请业界、公司总监、学长学姐、教学总监与你面对面,帮你拓视野、拓人脉。
入职指导
入职后遇到难题怎么办?我们每月一次求职训练营、老师微信QQ随时在线帮你解决,助你升职加薪。
南宁PHP培训机构哪个更好,达内时代科技集团成人类课程方向:Java企业级应用软件工程师、Java互联网架构软件工程师、Java大数据工程师、Web前端开发工程师、网络运维与网络安全、Linux云计算工程师、Python人工智能软件工程师、国际嵌入式软件工程师、C++国际软件工程师、PHP/web.3.0互联网工程师、国际软件测试工程师、Android软件工程师、IOS软件工程师、.NET软件工程师、全链路UI设计师、商业插画、商业视觉设计课程、产品级UED交互设计师、全栈式CAD设计师、产品经理、VR开发工程师、VR次世代模型师、网络营销师、新电商运营官、企业级影视视效、人力资源经理人课程、总账会计课程
本篇文章给大家带来的内容是介绍什么是yii2的缓存依赖?如何使用缓存依赖?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
概述
缓存是Yii2的强大特性之一,合理使用缓存技术可以有效地减小服务器的访问压力。Yii2基本的缓存包括数据缓存、片段缓存、页面缓存和HTTP缓存,这部分内容在文档中有更加详细的说明,这里不再赘述,如有需要可以参考Yii2开发文档中的缓存部分。
页面缓存
数据缓存与片段缓存都是针对网站中某一部分内容进行的缓存,这种缓存需要在代码部分进行显示声明,修改起来比较麻烦。相对的页面缓存则是针对控制器下方法,对这个方法的视图文件进行页面级别的缓存。由于页面缓存可以使用行为的形式,对控制器进行注入,修改的时候只要在控制器中修改对应的配置项即可,所以使用页面缓存更加简单,扩展性更强。
缓存依赖
一般来说,缓存可以增强服务器的性能,但会一定程度上减弱其交互性。所以需要对缓存进行定期的检查,清理过期数据,填充数据,以增加内容的及时准确。在这一点上,Yii2的缓存依赖可以有效解决这个问题。Yii2共有五个内置的缓存类,如下所示:
yii\caching\ChainedDependency:如果依赖链上任何一个依赖产生变化,则依赖改变。
yii\caching\DbDependency:如果指定SQL语句的查询结果发生了变化,则依赖改变。
yii\caching\ExpressionDependency:如果指定的PHP表达式执行结果发生变化,则依赖改变。
yii\caching\FileDependency:如果文件的后修改时间发生变化,则依赖改变。
yii\caching\TagDependency:将缓存的数据项与一个或多个标签相关联。您可以通过调用yii\caching\TagDependency::invalidate()来检查指定标签的缓存数据项是否有效。
以数据库依赖DbDependency为例,在控制器IndexController中,声明依赖关系:
<?php
amespace frontend\controllers;
use yii\web\Controller;
class IndexController extends Controller{
public function behaviors(){
return[
[
'class'=>'yii\filters\PageCache',
'only'=>['index'],
'duration'=>60,
'variations'=>[
\Yii::$app->language,
],
'dependency'=>[
'class'=>'yii\caching\DbDependency',
'sql'=>'SELECT COUNT(*)FROM post',
],
],
];
}
public function actionIndex()
{
return$this->render('index');
}
}
如代码所示,在行为方法behaviors()中声明页面配置的驱动类,only对应为一个数组,数组元素是需要缓存的方法对应的视图。duration表示过期时间,单位为秒。variations对应一个数组,系统会监听这个数组中内容是否发生了变化,如果发生变化就会刷新缓存,反之则不会。dependency对应依赖关系,其中class表示缓存依赖的类,sql表示一个一条查询语句。含义就是post数据表中记录的总条数发生变化时,就可以认为新增或者删除类某条数据,需要刷新缓存。
链式依赖
上面的例子非常简单,而实际开发往往要更加复杂。有时候一个页面是否需要刷新由很多因素决定,不是一个关系就可以描述清楚的。比如说post数据表中既没有删除没有增加,而是更新一条数据,那上面那查询语句就无法处理类。这时候,可以用SELECT MAX(*)FROM post检测更新,但内置页面缓存类中无法直接写入这两个查询,这时候可以用链式依赖的内置类来解决这个问题。
所谓链式依赖,就是将缓存依赖关系配置到一个链中,一旦链中某个关系不成立,就会刷新缓存。
其中yii\caching\ChainedDependency就是缓存依赖的主要实现类。
实现代码如下所示:
<?php
amespace frontend\controllers;
use yii\web\Controller;
class IndexController extends Controller
{
public function behaviors()
{
return[
'pageCache'=>[
'class'=>'yii\filters\PageCache',
'only'=>['index'],
'duration'=>24*3600*365,//1 year
'variations'=>[
\Yii::$app->language,
\Yii::$app->id
],
'dependency'=>[
'class'=>'yii\caching\ChainedDependency',
'dependencies'=>[
ew\yii\caching\DbDependency(['sql'=>'SELECT MAX(updated_at)FROM post']),
ew\yii\caching\DbDependency(['sql'=>'SELECT COUNT(id)FROM post']),
ew\yii\caching\DbDependency(['sql'=>'SELECT MAX(updated_at)FROM category']),
ew\yii\caching\DbDependency(['sql'=>'SELECT COUNT(id)FROM category']),
ew\yii\caching\ExpressionDependency(['expression'=>'\Yii::$app->request->get("id")']);
ew\yii\caching\FileDependency(['fileName'=>'yanying.txt']);
]
],
],
];
}
public function actionIndex()
{
return$this->render('index');
}
}
如上所示,dependency中配置类Yii2内置的链式依赖,并在dependencies中定义类缓存依赖关系的“链”。当链上某个关系不成立时,就会刷新缓存。另外在整个缓存页面中,如果某一小部分并不需要缓存,可以将其设置为动态内容,这部分可以查看文档,不过更推荐看源码,文档介绍的比较简单。
以上就是小编讲的大致内容了,还有什么相关问题要问的,达内IT教育涵盖基本行业知识,安排的合理,专业师资,小班授课,费用低,学习快,400咨询热线24小时答疑。
尊重原创文章,转载请注明出处与链接:http://www.soxsok.com/wnews133694.html 违者必究! 以上就是关于“南宁PHP培训机构哪个更好”的全部内容了,想了解更多相关知识请持续关注本站。