- 浏览: 2032996 次
- 来自: 武汉
文章分类
- 全部博客 (415)
- UI设计 (19)
- PHP (26)
- PHP工具类 (23)
- 二次开发 (53)
- phpMVC (28)
- javascript (50)
- JS 组件 (20)
- MYSQL (37)
- 其他 (16)
- xml/flash/flex (6)
- 版本控制 (7)
- 开源 (4)
- bug解决 (5)
- Linux (15)
- NoSQL (14)
- 软件设计 (21)
- C/PHP内核 (5)
- 安全性 (8)
- 面试 (18)
- 设计模式 (4)
- 重构 (6)
- 开发配置 (11)
- SQL SERVER (12)
- 采集 (3)
- SEO (2)
- 维护 (15)
- UML (5)
- 硬件标准 (1)
- 架构 (8)
- JAVA (1)
最新评论
-
carry0987:
求大神分離下X3的模板...不然對於PHP7不友好啊...
分离自Discuz模板类和语法 -
青木得海角:
你好,里面的 Crypt/TripleDES.php 和 Cr ...
POS机算法 -
zohog:
楼主,Mac.php中里面的 Crypt/TripleDES. ...
POS机算法 -
zohog:
楼主,Mac.php中里面的 Crypt/TripleDES. ...
POS机算法 -
q59200182:
能不能给个完整的demo 新手上路不会 求带
AngularJs 指令directive之controller,link,compile
1.数据缓存
常见的缓存操作方法get,set,add,delete,flush默认的缓存文件保存到protected/runtime/目录。
ApcCache扩展配置
第一步:下载php_apc.dll 在http://downloads.php.net/pierre/
第二步:让php.ini支持apc扩展模块。
将php_apc.dll放入你的ext目录,然后打开php.ini 加入:
extension=php_apc.dll apc.rfc1867 = on apc.max_file_size = 100M upload_max_filesize = 100M post_max_size = 100M apc.slam_defense = 0 apc.write_lock = 1
在配置文件中配置缓存,可以配置多个。代码如下
'ApcCache'=>array( 'class'=>'CApcCache', ), 'Dbcache'=>array( 'class'=>'CDbCache', ), 'FileCache'=>array( 'class'=>'CFileCache', 'cachePath'=> '/Webroot/trackstar/protected/runtime/cache/test', ), 'MemCache'=>array( 'class'=>'CMemCache', 'servers'=>array( array( 'host'=>'server1', 'port'=>11211, 'weight'=>60, ), array( 'host'=>'server2', 'port'=>11211, 'weight'=>40, ), ), ),
session cache在开启apc cache时可以用,它将seesion存到apc中比存到文件中要快
'cache' => array( 'class' => 'CApcCache', ), 'session' => array( 'class' => 'CCacheHttpSession', ),
yii如果要使用session.save_handler=memcache 如果需要扩展自定义的session管理方法 ,仅仅需要继承CHttpSession, 重写openSession,readSession,writeSession, destroySession,gcSession 这五个方法即可,见附件
--------------------------------------------------------------------------------------
| 这种配置component的方式非常灵活。
| Yii的webapp,继承了CModule,而CModule重写了__set,__get
| 魔术方法,他们的作用就是针对应用配置文件中对未知component
| 名称的设置和调用。非常灵活。系统只是约定了一组coreComponent
| 的调用方式。如getCache,getDb
,等。
--------------------------------------------------------------------------------------
为了调试,有时需要知道当前用户的session ID,
该值就在 Yii::app()->session->sessionID
中。
最后,当用户退出登录(logout),你需要消除痕迹,可使用:
Yii::app()->session->clear()
移去所有session变量,然后,调用
Yii::app()->session->destroy()
移去存储在服务器端的数据。
通过以下方式调用
Yii::app()->FileCache;
Yii::app()->Dbcache;
存取,设置缓存,也很简单
$cacheObj->set($key,$value,$expire);
$cacheObj->get($key);
$cache=Yii::app()->cache;
$cache['var1']=$value1; // 相当于: $cache->set('var1',$value1);
$value2=$cache['var2']; // 相当于: $value2=$cache->get('var2');
CDbConnection::cache()
$sql = 'SELECT * FROM tbl_post LIMIT 20'; $dependency = new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_post'); $rows = Yii::app()->db->cache(1000, $dependency)->createCommand($sql)->queryAll();
CActiveRecord::cache()
$dependency = new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_post'); $posts = Post::model()->cache(1000, $dependency)->findAll();
2.片段缓存
片段缓存指缓存网页某片段,要使用片段缓存,在控制器视图脚本中调用CController::beginCache() 和CController::endCache() 。这两种方法开始和结束包括的页面内容将被缓存。
<?php if($this->beginCache('part',array('cacheID'=>'ApcCache','varyByParam'=>array('pid','nid')))) { ?> this is part test cache<br> <?php $this->endCache(); } ?>
其中part是缓存后的$key值,this is part test cache<br>是缓存后的$value值,cacheID是main.php中的配置,默认是cache,不需要
3.页面缓存
页面缓存指的是缓存整个页面的内容。
public function filters(){ return array( array( 'COutputCache+index', 'duration' => 120, 'cacheID' => 'MemCache', 'varyByParam'=>array('id'), ), ); }
其中大家可以看到 COutputCache+index,这里的意思是使用COutputCache类缓存文件,后面的加index指的是只缓存actionIndex函数,如果你需要缓存其他的就继续增加COutputCache+index,hello,test…如果没有后面的+那么默认是缓存整个控制器里面的所有方法 ,该filter配置为利用COutputCache过滤器来缓存整个被应用程序
varyByParam是我们之前提起过的一种很重要的可选项。为了给你减轻压力,减少编写标识被缓存内容key的工作量,该功能允许key被框架自动控制。也就是说,通过指定一系列来自GET参数中的名称。当我们开始请求时,系统将会很好的使用该id作为唯一key的一部分来生成缓存内容。通过指定'varyByParam'=> array('id'),COutputCache为我们完成了基于输入请求字符串中id的余下工作 。这里有很多可选项,在我们使用 COutputCache来缓存数据时,来作为自动生成key名字的策略。下面是可以使用的一个列表:
- varyByRoute:通过将该选项设置为true,具体请求的路由部分将会作为独立标识符的一部分用于生成缓存数据。所以,你可以使用请求controller和acion的组合来区别缓存内容。
- varyBySession:通过设置该选项为true,将使用唯一的session id来区分缓存中的内容。每个用户的session都是不同的,但是可以用来为缓存服务。
- varyByParam:如前面所说,这里是用输入的GET中的参数来区分缓存内容。
- varyByExpression:给该选项设置PHP表达式,我们可以使用相应表达式的结果来区分缓存的内容。
所以,当在ProjectController类中配置了上面的过滤器后,每次针对某个项目的请求内容都会被缓存,并且在2分钟后刷新缓存。你可以通过先缓存一个项目的细节,然后使用某种方法刷新缓存来查看。所有的更新都会在其生存周期结束后才可以观察到。
缓存全部页面内容是极大提升性能的一种方式,但是对每一个应用程序中的每一个页面进行缓存没有意 义。做一个上面3种方式的总结:数据,片段和页面缓存,在大多数真实的项目中是需要的。我们只简单的了解了一下Yii中提供的缓存功能。希望这能为你迅速 看清Yii的缓存功能提供助力。
4.动态内容
动态内容是指片段输出即使是在片段缓存包括的内容中也不会被缓存 。即使是包括的内容是从缓存中取出,为了使动态内容在所有时间是动态的,每次都得重新生成。出于这个原因,我们要求动态内容通过一些方法或函数生成。
- CMemCacheHttpSession.rar (1.6 KB)
- 下载次数: 48
评论
http://www.yiiframework.com/doc/guide/1.1/zh_cn/caching.data,
这里提到“缓存的数据将一直留在缓存中,除非它由于某些缓存策略(例如缓存空间已满,旧的数据被删除)而被清除”,
我指定到'cachePath'=>'F:\WebRoot\vhost\yii\cache',
请问这里的缓存空间是怎么定义的?我F盘剩余的空间吗?只要我F盘没有满,就一直可以存吗
发表评论
-
YII 利用Clip构建layout
2012-09-06 10:43 2204Yii为我们提供了layout,我们可以把一个view嵌入 ... -
YII contoller之间的方法调用 redirect
2012-06-14 11:42 3325一个contoller CustomerControlle ... -
YII 配置文件,不同的环境不同的配置
2012-04-12 14:29 13270用YIIFramework的库开发 ... -
YII Behavior重用
2012-04-11 19:27 6291用behavior的好处是可以 ... -
Yii 日志与调试 debugtoolbar
2012-03-07 19:49 182761系统自带调试 index.php开启调试模式 // ... -
Yii 自定义Widget Portlet
2012-02-08 10:48 4530能够重用的小的代码模块,不涉及业务逻辑的,用在跟视图相关的 ... -
Yii 自定义Controller
2012-02-08 10:43 1926案例:导出,下载, 上传等。有一个CsvControlle ... -
Yii 前后台分离 demo
2012-02-07 17:20 114951.首先我把目录结构写下来: wwwroot/ ... -
YII 过滤器 filters
2012-03-06 10:08 12169Yii中的过滤器是指,通过配置,在一个控制器的动作被执行之 ... -
Yii CDbCriteria常用用法
2012-03-07 09:53 15072$criteria = new CDbCriteria ... -
YII Jquery冲突问题解决方法
2012-02-06 18:06 3288为什么用YII assets 1.assets的作用是方 ... -
YII 存放登录信息的类
2012-01-09 10:59 10001如果在用户登录后想额外调用除 user,id之外的数据库变 ... -
YII CGridView CListView 返回列表带记忆功能
2012-01-06 11:20 6395我们知道Yii 中的CGridview 很好用,但是有时候 ... -
YII console 定时脚本
2011-12-28 11:38 8704可以用来做定时程序通过命令运行代码,非url访问方式更安全 ... -
YII RBAC
2011-12-28 16:35 6670YII非rbac通用权限,contro ... -
YII MVC View中的$this
2011-12-26 13:23 1825WebsiteController <?php c ... -
YII AJAX registerScript
2011-12-22 15:09 46271.YII封装的CHtml::ajaxLink,QuoteCo ... -
YII 分页排序
2011-12-22 12:05 8800'defaultOrder'=>array('tit ... -
YII 怎样显示静态页 自定义错误页
2011-12-22 12:05 4033在controller中加入,如sitecontrolle ... -
YII 通用CURD外部Action 适合单表
2011-12-22 11:00 4538用YII创建表的时候出现没主键的表,你可以在AR prim ...
相关推荐
$cache = \Yii::$app->cache; $data = $cache->get('my_key'); if ($data === false) { $data = //... 计算或获取数据 $cache->set('my_key', $data, 3600); // 设置缓存,过期时间为1小时 } ``` **Redis 的优势*...
yii 学习笔记,其中包括数据缓存、缓存组件、缓存过期、缓存依赖的理解及yii2数据缓存的测试代码
通过`yii\caching\Cache`接口,可以轻松集成和管理缓存。 7. **安全防护**:Yii内置了安全组件,如`yii\web\User`用于处理用户认证和授权,`yii\filters\CsrfValidation`防止跨站请求伪造,还有输入验证、SQL注入...
Yii 的组件化设计允许开发者轻松替换如 session、cache 等组件,而无需大规模重构代码。延迟加载机制确保只有在真正需要时才会加载组件,降低资源消耗。 Yii 的配置管理相当灵活,不局限于单一的 config.php 文件,...
4. **性能优化**:学习数据库查询优化技巧、减少 HTTP 请求、使用缓存(如 Yii 的 Cache 组件)等方法提升系统性能。 5. **安全实践**:理解 Yii 的安全特性,如 CSRF 防护、输入验证、用户认证和授权。 6. **API ...
组件可以通过 `Yii::app()->ComponentID` 的方式访问,例如 `Yii::app()->cache`。组件默认按需创建,以避免影响性能。但也可以通过将组件 ID 添加到 `preload` 属性中来确保它们始终被创建。 ##### 2.5 关闭组件 ...
- 可以使用`yii\caching\Cache`接口来抽象不同类型的缓存操作。 8. **RESTful API开发**: - Yii 2.0 支持轻松创建符合REST原则的API,提供`yii\web\ rest\ActiveController`基类,简化数据资源的CRUD操作。 - ...
手册还将涵盖Yii2的缓存机制,包括数据缓存和页面缓存,以及如何利用Yii2内置的缓存组件如FileCache、DbCache等提高应用性能。另外,Yii2的认证和授权管理也是重点,包括基于角色的访问控制(RBAC)、登录注册功能的...
本文将详细介绍YII中日志的配置、使用方法及相关注意事项,通过实例阐述如何在YII应用中运用日志。 首先,了解日志的作用是非常必要的。YII框架中的日志系统不仅能帮助开发者记录错误和警告信息,还能用于性能分析...
$cache = Yii::app()->cache; // 尝试获取缓存数据,如果不存在则执行某些操作并保存数据到缓存中 $data = $cache->get($key); if($data === false){ // 这里执行获取数据的操作 $data = '需要缓存的数据'; //...
这个动作使用Yii应用实例的`cache`组件调用`flush()`方法来清除缓存。`flush()`方法是一个通用方法,用于清空所有缓存内容。 为了使缓存清理能够工作,确保在Yii应用的配置文件(通常是`protected/config/main.php`...
此插件依赖于 实现已支持的组件yii2-db 易框架的 MySQL-Connect 、 ActiveRecord 等yii2-log 易框架的日志组件,推荐还是用 swoft-log 吧yii2-cache 易框架的缓存组件,安装环境要求swoft-v1.0 以上composer install...
Yii支持多种缓存机制,如文件缓存、数据库缓存、APC(Alternative PHP Cache)、Memcached和Redis等。缓存的使用可以显著提高Web应用的性能,尤其是在处理大量重复数据请求时。 五、安全防护 Yii框架内置了多种...
7. **性能优化**:如预编译的视图,以及通过Yii的PageCache和FragmentCache组件实现的页面和片段缓存。 8. **命令行工具(Gii)**:这是一个代码生成工具,可以帮助开发者快速生成常见的CRUD操作和MVC组件,提高开发...
yii2-浏览器信息 Yii2扩展名。 提供有关浏览器的详细信息。... ./yii browser-info/update-cache 使用依赖注入来定义concrete实例: Yii :: $ container -> set ( 'asu\browserinfo\BrowserInfo' ,
我们还可以利用`\yii\filters\PageCache`和`\yii\filters\ContentNegotiator`来实现响应缓存和内容协商,提高API的性能和用户体验。 在实际项目中,我们还需要考虑错误处理、日志记录、数据序列化等方面。Yii2提供...
它包括一个Cache和Session存储处理程序,并实现ActiveRecord模式,该模式允许您将活动记录存储在Redis中。 有关许可证信息,请检查文件。 文档位于 。 要求 所有组件至少都需要redis版本2.6.12才能正常工作。 ...